IntelliJ IDEA 2025.2 Help

代码样式。 Java

使用此页面配置 Java 文件的格式选项。 当您更改这些设置时, 预览 面板将显示这将如何影响您的代码。

制表符和缩进

条目

描述

使用制表符

请使用 Tab 键进行缩进。 当复选框未勾选时, IntelliJ IDEA 使用空格而非制表符。

智能制表符

  • 如果选中此复选框,则嵌套代码块的缩进将根据需要使用制表符和空格,而对齐缩进则仅使用空格。

  • 如果此复选框未选中,将只使用选项卡。 这意味着一组符合指定制表符大小的空格将自动替换为一个制表符,这可能会导致精细对齐的破坏。

智能制表符 复选框在启用 使用制表符 选项时可用。

制表符大小

在此字段中,指定一个选项卡中包含的空格数。

缩进

在此字段中,指定为每个缩进级别插入的空格数量。

连续缩进

指定从前一行延续的行的缩进,使其清晰地表示它们是同一语句或代码块的一部分。 当单个语句过长而无法放在一行中时,使用续行缩进。

空行时保持缩进

如果选中此复选框,IntelliJ IDEA 将会保持空行的缩进,就像它们包含了一些代码一样。

如果取消勾选此复选框,IntelliJ IDEA 将删除制表符和空格。

标签缩进

在此字段中,指定在下一行的选项卡语句之前插入的空格数量。

绝对标签缩进

如果选中此复选框,选项卡缩进将被视为绝对空格数。 否则,选项卡缩进将相对于先前的缩进级别进行计数。

Do not indent top level class members

选择此复选框,可以让顶级类成员位于类声明的缩进级别。

相对于表达开始使用缩进

使用此复选框在两种可能的缩进行为之间切换:

  • 如果此选项被禁用,代码块将与以新行开始的最近的祖先块对齐。

  • 如果启用此选项,代码块将以列的形式格式化。

空格

选中或清除复选框以在各种上下文中插入、不插入或移除空格。

括号前的空格

条目

示例

方法声明括号

如果选中,将在方法声明的左括号前插入一个空格。 否则,不插入空格。

public void foo (int x, int y) {}
public void foo(int x, int y) {}

方法调用括号

如果选中,将在方法调用的左括号前插入一个空格。

否则,不插入空格。

System.out.print (a);
System.out.print(a);

“if” 括号

如果选中,将在 if 声明中的开头括号之前插入一个空格。 否则,不插入空格。

if (0 < x && x < 10) {}
if(0 < x && x < 10) {}

“for” 括号

如果选中,将在 for 循环中的开括号前插入一个空格。 否则,不插入空格。

for (int i = 0; i < x; i++) {}
for(int i = 0; i < x; i++) {}

“while” 括号

如果选中,将在 while 循环中的开括号前插入一个空格。 否则,不插入空格。

while (x != y) {}
while(x != y) {}

“switch” 括号

如果选中,将在 switch 声明中的开头括号之前插入一个空格。 否则,不插入空格。

switch (e.getCode()) {}
switch(e.getCode()) {}

“try” 括号

如果选中,将在 try 声明中的开头括号之前插入一个空格。 否则,不插入空格。

try (Res r1 = getResource(); Res r2 = null) {}
try(Res r1 = getResource(); Res r2 = null) {}

“catch” 括号

如果选中,将在 catch 块的左括号前插入一个空格。 否则,不插入空格。

catch (MyException e) {}
catch(MyException e) {}

“synchronized” 括号

如果选中,将在 synchronized 块的左括号前插入一个空格。 否则,不插入空格。

synchronized (this) {}
synchronized(this) {}

注解参数

如果选中,将在注解参数的左括号前插入一个空格。 否则,不插入空格。

@SuppressWarnings ({"ALL"})
@SuppressWarnings({"ALL"})

析构列表

如果选中,将在解构模式的左括号前插入一个空格。 否则,不插入空格。

case Rec (String s, int i) r -> {}
case Rec(String s, int i) r -> {}

围绕操作符

条目

示例

赋值运算符(=、+=、…)

如果选中,将在赋值表达式中的赋值操作符周围插入空格。 否则,不会插入空格。

int[] empty = new int[]{};
int[] empty=new int[]{};

逻辑运算符(&&、||)

如果选中,逻辑表达式中的逻辑运算符周围会插入空格。 否则,不会插入空格。

public void checkValue() { if (0 < x && x < 10) { } }
public void checkValue() { if (0 < x && x < 10) { } }

相等运算符(==、!=)

如果选择,比较表达式中的等号运算符周围将插入空格。 否则,不会插入空格。

while (x != y) {}
while (x!=y) {}

关系运算符(<、>、<=、>=)

如果被选中,关系运算符在比较表达式中会插入空格。 否则,不会插入空格。

if (0 < x && x < 10) {}
if (0<x &&x< 10) {}

按位运算符(&、|、^)

如果选中,将在位运算符周围插入空格。 否则,不会插入空格。

y += (y ^ 0x123) << 2;
y += (y^0x123) << 2;

加法运算符(+、-)

如果选中,将在加法运算符周围插入空格。 否则,不会插入空格。

x = f(x * 3 + 5);
x = f(x * 3+5);

乘法运算符(*, /, %)

如果选中,将在乘法运算符周围插入空格。 否则,不会插入空格。

x = f(x * 3 + 5);
x = f(x*3 + 5);

移位运算符(>、>>>)

如果选中,将在位移运算符周围插入空格。 否则,不会插入空格。

y += (y ^ 0x123) << 2;
y += (y ^ 0x123)<<2;

一元运算符(!,-,+,++,--)

如果选中,将在一元运算符周围插入空格。 否则,不会插入空格。

x = y >= 0 ? arr[y] : - 1;
x = y >= 0 ? arr[y] : -1;

Lambda 箭头

如果选中,将在 lambda 箭头周围插入空格。 否则,不会插入空格。

Runnable r = () -> {};
Runnable r = ()->{};

方法引用双冒号

如果选中,将在方法引用的双冒号周围插入空格。 否则,不插入空格。

Runnable r1 = this :: bar;
Runnable r1 = this::bar;

在左大括号之前

条目

示例

类左大括号

如果选中,类声明中的类名和左大括号之间将插入一个空格。 否则,不插入空格。

public class Main { }
public class Main{ }

选择或清除复选框只在 大括号位置在类声明中 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

方法左括号

如果选中,将在方法声明中方法参数列表的右括号和左大括号之间插入一个空格。 否则,不插入空格。

public int add(int a, int b) { }
public int add(int a, int b){ }

选择或清除复选框只在 大括号位置在方法声明中 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'if' 左大括号

如果选中,条件表达式的闭括号和 if 语句的开括号之间将插入一个空格。 否则,不插入空格。

if (0 < x && x < 10) { }
if (0 < x && x < 10){ }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'else' 左大括号

如果选中, else 关键字和 if-else 语句中的开括号之间将插入一个空格。 否则,不插入空格。

if (x) { System.out.println("Hello from x!"); } else { System.out.println(y); }
if (x) { System.out.println("Hello from x!"); } else{ System.out.println(y); }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'for' 左大括号

如果选中,条件表达式的结束括号和 for 循环的开始大括号之间将插入一个空格。 否则,不插入空格。

for (int a : X) { System.out.print(a); }
for (int a : X){ System.out.print(a); }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'while' 左大括号

如果选中,条件表达式的结束括号和 while 循环的开始大括号之间将插入一个空格。 否则,不插入空格。

while (x != y) { x = f(x * 3 + 5); }
while (x != y){ x = f(x * 3 + 5); }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'do' 左大括号

如果选中,将在 do 关键字和 do-while 循环中的开启大括号之间插入空格。 否则,不插入空格。

do { System.out.println("Count is: " + count); count++; } while (count <= 3);
do{ System.out.println("Count is: " + count); count++; } while (count <= 3);

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'switch' 左大括号

如果选中,条件表达式的闭括号和 switch 语句的开括号之间将插入一个空格。 否则,不插入空格。

switch (e.getCode()) { }
switch (e.getCode()){ }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'try' 左大括号

如果选中,将在 try 关键词和 try 块的开括号之间插入一个空格。 否则,不插入空格。

try { get("x"); } catch (Exception e) { }
try{ get("x"); } catch (Exception e) { }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'catch' 左大括号

如果选中,将在 catch 语句参数列表和 catch 块的开括号之间插入一个空格。 否则,不插入空格。

try { get("x"); } catch (Exception e) { }
try { get("x"); } catch (Exception e){ }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'finally' 左大括号

如果选中,将在 finally 关键词和 finally 块的开括号之间插入一个空格。 否则,不插入空格。

try { get("x"); } catch (Exception e) { } finally { }
try { get("x"); } catch (Exception e) { } finally{ }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

'synchronized' 左大括号

如果选中,将在 synchronized 关键词和 synchronized 块的开括号之间插入一个空格。 否则,不插入空格。

synchronized (this) { switch (e.getCode()) { }
synchronized (this){ switch (e.getCode()) { }

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

数组初始值设定项左大括号

如果选中,将在数组初始化器的左大括号前插入一个空格。 否则,不插入空格。

int[] empty = new int[] {};
int[] empty = new int[]{};

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

注解数组初始值设定项左大括号

如果选中,将在数组初始化器的左大括号前插入一个空格。 否则,不插入空格。

@SuppressWarnings( {"ALL"})
@SuppressWarnings({"ALL"})

选择或清除复选框只在 大括号位置其他 设置为 行尾 时,在 换行和大括号 选项卡上才相关。

在关键词之前

条目

描述

'else' 关键字

如果选中,将在 if 块的闭合括号和 else/elseif 关键字之间插入一个空格。 否则,不插入空格。

if (x) { System.out.println("Hello from x!"); } else { System.out.println(y); }
if (x) { System.out.println("Hello from x!"); }else { System.out.println(y); }

'while' 关键字

如果选中,一个空格会被插入在 do 块的关闭括号和 while 关键字之间,在 do-while 循环中。 否则,不插入空格。

do { System.out.println("Count is: " + count); count++; } while (count <= 3);
do { System.out.println("Count is: " + count); count++; }while (count <= 3);

'catch' 关键字

如果选中,一个空格将会在 try 块的闭合括号和 catch 关键字之间插入。 否则,不插入空格。

try { get("x"); } catch (Exception e) { }
try { get("x"); }catch (Exception e) { }

'finally' 关键字

如果选中,一个空格将会在 catch 块的闭合括号和 finally 关键字之间插入。 否则,不插入空格。

try { get("x"); } catch (Exception e) { } finally { }
try { get("x"); } catch (Exception e) { }finally { }

条目

描述

代码大括号

如果选中,将始终在代码大括号内插入空格。 否则,永远不会插入空格。

中括号

如果选中,括号内总是会插入空格。 否则,永远不会插入空格。

x = y >= 0 ? arr[ y ] : -1;
x = y >= 0 ? arr[y] : -1;

数组初始化大括号

如果选中,数组初始化表达式中的括号内总是会插入空格。 否则,不会插入空格。

int[] numbers = { 1, 2, 3, 4, 5 };
int[] numbers = {1, 2, 3, 4, 5};

空数组初始化大括号

如果选中,将在空数组初始化器 { } 的大括号内插入空格。 否则,不会插入空格。

int[] empty = new int[]{ };
int[] empty = new int[]{};

分组括号

如果选中,复杂表达式中分组括号内的空格将始终插入。 否则,不会插入空格。

y += ( y ^ 0x123 ) << 2;
y += (y ^ 0x123) << 2;

方法声明括号

如果选中,将在方法声明的括号内插入空格。 否则,不会插入空格。

public void foo( int x, int y ){ }
public void foo(int x, int y){ }

空方法声明括号

如果选中,将在空方法声明的括号内插入空格。 否则,不会插入空格。

Runnable r = ( ) -> { };
Runnable r = () -> { };

方法调用括号

如果选中,将在方法调用的括号内插入空格。 否则,不会插入空格。

System.out.println( "Hello, World!" );
System.out.println("Hello, World!");

空方法调用括号

如果选中,将在空方法调用的括号内插入空格。 否则,不会插入空格。

switch (e.getCode( )) { }
switch (e.getCode()) { }

'if' 圆括号

如果选中,那么在 if 声明中的括号内部总是会插入空格。 否则,不会插入空格。

for (int num : numbers) { if ( x ) { System.out.println("Hello from x!"); } else { System.out.println(y); } }
for (int num : numbers) { if (x) { System.out.println("Hello from x!"); } else { System.out.println(y); } }

'for' 圆括号

如果选中, for 循环中的括号内总是会插入空格。 否则,不会插入空格。

for ( int a : X ) { System.out.print(a); }
for (int a : X) { System.out.print(a); }

'while' 圆括号

如果选中, while 循环中的括号内总是会插入空格。 否则,不会插入空格。

while ( x != y ) { x = f(x * 3 + 5); }
while (x != y){ x = f(x * 3 + 5); }

'switch' 圆括号

如果选中,那么在 switch 声明中的括号内部总是会插入空格。 否则,不会插入空格。

switch ( e.getCode() ) { }
switch (e.getCode()){ }

“try” 括号

如果选中,那么在 try 声明中的括号内部总是会插入空格。 否则,不会插入空格。

try ( MyRes r1 = getRes(); MyRes r2 = null ) { }
try (MyRes r1 = getRes(); MyRes r2 = null) { }

'catch' 圆括号

如果选中, catch 结构中括号内的空格将始终被插入。 否则,不会插入空格。

try { get("x"); } catch ( Exception e ) { }
try{ get("x"); } catch (Exception e) { }

“synchronized” 括号

如果选中,那么在 synchronized 声明中的括号内部总是会插入空格。 否则,不会插入空格。

synchronized ( this ) { switch ( e.getCode() ) { }
synchronized (this) { switch ( e.getCode() ) { }

类型转换括号

如果选中,将始终在类型转换括号内插入空格。 否则,不会插入空格。

int[] arr = ( int[] )g(y);
int[] arr = (int[])g(y);

注解括号

如果选中,将始终在注解括号内插入空格。 否则,不会插入空格。

@SuppressWarnings( {"ALL"} )
@SuppressWarnings({"ALL"})

尖括号

如果选中,将始终在尖括号内插入空格。 否则,不会插入空格。

class Bar{ static < U, T > U mess(T t){ return null; } }
class Bar{ static <U, T> U mess(T t){ return null; } }

记录头

如果选中,将始终在记录头内插入空格。 否则,不会插入空格。

record Rec( String s, int i ){ }
record Rec(String s, int i){ }

析构列表

如果选中,将始终在解构列表内插入空格。 否则,不会插入空格。

switch ( o ) { case Rec( String s, int i ) r -> { } }
switch ( o ) { case Rec(String s, int i) r -> { } }

显示正文时在块大括号内

如果选中,将始终在解构列表内插入空格。 否则,不会插入空格。

if (true) { System.out.println( "Condition is true" ); }
if (true){ System.out.println( "Condition is true" ); }

在三元运算符 (?:) 中

条目

描述

在'?' 前

在'?' 后

在':' 前

在':' 后

Between '?' and ':'

选中本节中的复选框,以便在 ? 周围、 : 周围以及在三元运算符中 ?: 之间自动插入空格。

例如,如果选中了 在'?' 前在':' 后, IntelliJ IDEA 会在三元条件表达式中的 ? 前和 : 后自动插入空格。 否则,不会插入空格。

x=y>=0 ?arr[y]: -1;
x=y>=0?arr[y]:-1;

类型参数

条目

描述

在逗号后

如果选中,将在多类型的类型参数中逗号后插入空格。 否则,不会插入空格。

Bar.<String, Integer>mess(null);
Bar.<String,Integer>mess(null);

在打开尖括号之前

如果选中,将在类型参数的左尖括号前插入空格。 否则,不会插入空格。

Bar. <String,Integer>mess(null);
Bar.<String,Integer>mess(null);

在关闭尖括号之后

如果选中,将在类型参数的右尖括号后插入空格。 否则,不会插入空格。

Bar.<String,Integer>mess(null);
Bar.<String,Integer> mess(null);

其他

条目

描述

在逗号前

如果选中,将在参数列表、参数列表、数组声明等中的逗号前自动插入空格。 否则,不会插入空格。

public void foo(int x ,int y){ }
public void foo(int x,int y){ }

在逗号后

如果选中,将在参数列表、参数列表、数组声明等中的逗号后自动插入空格。 否则,不会插入空格。

public void foo(int x,int y){ }
public void foo(int x, int y){ }

在 'for' 分号之前

如果选中,将在 for 循环中的分号前自动插入空格。 否则,不会插入空格。

for(int i=0 ;i<x ;i++){ y+=(y^0x123)<<2; }
for(int i=0;i<x;i++){ y+=(y^0x123)<<2; }

在 'for' 分号之后

如果选中,将在 for 循环中的分号后自动插入空格。 否则,不会插入空格。

for(int i=0; i<x; i++){ y+=(y^0x123)<<2; }
for(int i=0;i<x;i++){ y+=(y^0x123)<<2; }

在类型转换之后

如果选中,将在类型转换的右括号后自动插入一个空格。 否则,不插入空格,强制转换后的变量会粘附到强制转换上。

int[] arr=(int[]) g(y);
int[] arr=(int[])g(y);

注解值对中的 '=' 周围

如果选中,将在注解值对中的 = 运算符周围自动插入空格。 否则,不会插入空格。

@Annotation(param1 = "value1", param2 = "value2")
@Annotation(param1="value1", param2="value2")

在 foreach 中冒号之前

如果选中,将在 foreach 循环中的冒号前自动插入一个空格。 否则,不插入空格。

for(int a : X){ System.out.print(a); }
for(int a: X){ System.out.print(a); }

单行枚举大括号内

如果选中,将在单行枚举的常量列表的大括号内自动插入空格。 否则,不会插入空格。

public enum Day{ MONDAY,TUESDAY,WEDNESDAY }
public enum Day{MONDAY,TUESDAY,WEDNESDAY}

类型参数

条目

描述

在打开尖括号之前

如果选中,将在类型参数的左尖括号前自动插入一个空格。 否则,不插入空格。

public class Foo <T extends Bar&Abba,U>{
public class Foo<T extends Bar&Abba,U>{

类型边界周围

如果选中,将在类型参数的类型边界周围自动插入空格。 否则,不插入空格。

public class Foo <T extends Bar&Abba,U>{
public class Foo<T extends Bar&Abba,U>{

包装和大括号

在此选项卡中,自定义代码样式选项,IntelliJ IDEA 将在 重新格式化源代码 时应用。 左侧窗格包含异常列表(重新设置格式时保持 ),以及各种代码结构(列表、语句、操作、注解等)的放置和对齐选项。 右侧窗格显示预览。

对齐设置优先于缩进选项。

在以下位置硬包装

使用 强制换行位置 字段指定元素右侧所需的边距空间。 如果您选择了 默认 选项,那么将使用 全局设置中的右边距值。

输入时自动换行

使用 键入时换行 设置来指定如何将编辑的文本适应到指定的 强制换行位置 中:

  • 默认 :在这种情况下,IntelliJ IDEA 使用的是 键入时换行 选项,该选项在 全局设置中指定。

  • :在这个例子中,IntelliJ IDEA 使用了在 右边距 字段里指定的值。

  • :在这种情况下,此选项被关闭,一行可以超过右侧边距指定的值。

视觉指南

使用 视觉参考线 字段来指定多个右边距。 您可以保留默认值,或者输入您的边距所需的空格数。 如果您想要指定多个边距,请输入由顿号分隔的数字。

在重新格式化时保持

在重新格式化源代码时,使用复选框来配置 IntelliJ IDEA 将要做出的异常。 例如,默认情况下, 换行符 复选框被选中。 如果您的代码包含的行数比标准规范短,您可以在 换行符 多选框前取消选中,然后您再 重新格式化源代码以转换它们。

包装选项

换行样式应用于左侧窗格中指定的各种代码构造(例如,方法调用参数、方法声明参数或赋值语句)。

条目

描述

包装风格

从这个列表中,选择您想要的换行样式:

  • 不换行 :当选择此选项时,不会应用任何特殊的换行样式。

    选择此选项后,将忽略嵌套对齐和大括号设置。

  • 过长则换行 :选择此选项可以让超出右边界的行以正确的缩进进行折叠。

  • 始终换行 :选择此选项以包装所有列表中的元素,使每行只有一个元素,并具有适当的缩进。

  • 如果过长则截断 :选择此选项可将超出右边距的列表中的元素进行换行,以便每行一个元素并带有适当的缩进。

对齐选项

条目

描述

多行时对齐

如果选中此复选框,代码构造将在每一行的同一列开始。 否则,代码结构的位置由当前的缩进级别确定。

<character(s)> 在下一行

选择此复选框,当行被包装时,将指定的字符或字符移至下一行。

'else' 在新的一行

使用此复选框,将相应的语句或字符移至下一行。

<character> 之后换行

选择此复选框,可以将指定字符后的代码移至新行。

特别的 'else if' 处理

如果选中此复选框, else if 语句会位于同一行。

否则, else if 语句将移动到下一行的相应缩进级别。

缩进 'case' 分支

如果选中此复选框, case 语句将位于相应的缩进级别。 否则, case 语句会与 switch 放置在同一缩进级别。

大括号放置选项

条目

描述

大括号放置风格

使用此列表指定 类声明方法声明及其他类型声明中左大括号的位置。 可用选项包括:

  • 行尾 :选择此选项将在声明行末放置开括号。

  • 下一行(如果换行) :选择此选项,可以在多行声明行之后的行首放置开始大括号。

  • 下一行 :选择此选项可以在声明行之后的行首放置开括号。

  • 下一行(移位) :选择此选项将使声明行后的开放大括号换行,并移至相应的缩进级别。

  • 下一行,每次移位 :选择此选项可以使开括号放在声明行的下一行,并且相应地移到相应的缩进级别,并且将下一行移到下一个缩进级别。

强制使用大括号

从这个列表中,为 ifforwhiledo () while 语句选择大括号介绍方法。 可用选项包括:

  • 不强制 :选择此选项以自动阻止引入括号。

  • 当多行时 :如果语句占用多行,则选择此选项以自动引入括号。 请注意,IntelliJ IDEA 分析的是整个声明中的行数,而非仅其条件。

    IntelliJ IDEA 将自动插入大括号:

  • 始终 :勾选此复选框以自动始终添加大括号。

链式方法调用

使用以下选项来格式化链接的方法调用,使其更易于阅读。 请注意,无论链式调用的设置如何,构建器方法的调用总是被包装的。

条目

描述

包装第一次调用

允许在链式方法中包装第一个方法调用。

多行时对齐

对几个方法调用进行对齐。

构建器方法

指定您希望被视为构建器方法的方法名称(标识符),用逗号分隔。

例如: withTitle,withYear,addAuthor,withName,withLastName,end,build

保持构建器方法的缩进

在重新格式化代码时,保持手动插入的额外缩进不变。

空白行

使用此选项卡定义在重新格式化后,您希望 IntelliJ IDEA 保留并在您的代码中插入多少空行以及在何处插入。 对于每种类型的位置,请指定要插入的空行数量。 结果将在预览窗格中显示。

条目

描述

保持最大的空白行

在此区域,指定在指定位置重新格式化后要保留的空行数。

最小的空白行

在此区域,指定在指定位置应存在的空行数量。

JavaDoc

条目

描述

Alignment

定义 Javadoc 注释的对齐方式。

  • Align parameter descriptions :将参数说明与最长的参数名称对齐。 否则,描述与相应的参数名称之间以单个空格分隔。

  • Align thrown exception descriptions :将抛出异常的描述与最长的异常名称对齐。 否则,描述与异常名称之间由一个空格分隔。

Blank lines

定义在 Javadoc 注释中应插入空白行的位置。

  • After description :在 Javadoc 注释的描述部分之后自动插入一个空行。

  • After parameter descriptions :在 @param 标签组后自动插入一个空行。

  • After return tag :在 @return 标签之后自动插入一个空行。

Invalid tags

在此区域内,定义是否应保留无效的选项卡。

  • Keep invalid tags :保留 @invalidTag

  • Keep empty @param tags :保留没有描述的 @param 标签。

  • Keep empty @return tags :保留没有描述的 @return 标签。

  • Keep empty @throws tags :保留没有描述的 @throws 标签。

Other

在此区域中,为 Javadoc 注释指定附加格式化选项。

  • Enable leading asterisks :每行 Javadoc 注释都应以星号开头。

  • Use @throws rather than @exception :使用 @throws 选项卡。

  • Wrap at right margin :将超出右边距的文本换行到下一行。

  • Generate "<p>" on empty lines :在空行上自动插入 </p> 选项卡。

  • Keep empty lines :选中此复选框以保留手动添加的空行。

  • Do not wrap one line comments :请将简短的注释保持在一行中,并与开头和结尾的选项卡一起使用。

  • 保留换行 :如果未选中此复选框(默认情况下),在重新格式化时不会保留换行符。 当需要将注释格式化在段落的边界内,以占用最小的空间时,这是非常方便的。

    如果选中此复选框,将保留换行符。

  • Parameter descriptions on new line :将 Javadoc 参数的描述(如果有)放到新的一行。 它根据续行缩进值进行缩进。

  • Indent continuation lines :在多行注释中缩进后续行。

安排

这个选项卡允许您根据您的偏好定义一套重新排列您的代码的规则。

条目

描述

分组规则

使用此区域来设置分组规则。

  • 保持getter 和 setter 在一起

    选择此复选框,以维持 getter 和 setter 方法一起。 默认情况下,此复选框已被选中。

  • 保持重写方法在一起

    选择此复选框以按类和接口将重写的方法分组。 在 订单 列表中,选择 保持排序按名称排序 选项。

  • 保持依赖方法在一起

    选中此复选框以将依赖方法组合在一起。 在 订单 列表中,选择 深度排序优先宽度排序优先 选项。 前者会按照嵌套层次结构来排列方法;后者会将来自同一嵌套级别的兄弟方法组合在一起。

    class foo { public function parent() { $this->child1(); $this->child2(); } private function child1() { $this->nested1(); } private function nested1() { $this->nested2(); } private function nested2() { } private function child2() { } }
    class foo { public function parent() { $this->child1(); $this->child2(); } private function child1() { $this->nested1(); } private function child2() { } private function nested1() { $this->nested2(); } private function nested2() { } }

匹配规则

在此区域定义元素顺序,这是一组规则的列表,每个规则有一组匹配项,如修饰符或类型。

  • "添加"按钮 :使用此按钮来添加规则。 空规则 区域已打开。

  • “添加区段规则”按钮 :使用此按钮来添加一个段落规则。 部分规则允许您将方法或变量移动到您定义的部分中。

    例如,您可以创建以下节规则:

    一条匹配规则

    安排后,类中的方法将按照创建的部分规则重新排列,并被注释所包围:

    //methods start public void test() {} private int a() { return 1; } static void r() {} //methods end
  • "移除"按钮 :使用此按钮从列表中移除规则。

  • 编辑按钮 :使用此按钮编辑现有规则。 要查看此按钮,请导航至您想要编辑的规则并点击按钮。 在弹出的窗口中,修改规则字段。

  • 上移按钮 向下移动按钮 :使用这些按钮将选定的规则上移或下移。

  • 配置匹配规则 :使用此按钮来为匹配规则配置别名。 在这种情况下,当您创建一个排列规则时,您可以定义一个包含不同规则序列的自定义规则(别名),并将别名应用到您现在的规则。

空规则

使用这个区域创建新的匹配规则,或编辑已有的规则。 您可以从以下筛选器中选择:

  • 类型 :使用此过滤器为您的规则选择类或方法。

    请注意,双击类型关键字将否定条件。

  • 修饰符 :使用此过滤器来选择规则的修饰符类型。

    请注意,点击两次修饰符关键字会否定该条件。

  • 名称 :使用此字段来在规则中指定条目名称。 此筛选器仅匹配条目名称,例如字段名称、方法名称、类名称等。 该过滤器支持正则表达式,并使用 标准语法。 匹配是针对整个名称进行的。

  • 订单 :使用此列表来选择规则的排序顺序。 当多个元素使用相同的匹配规则时,此选项非常有用。 在这种情况下,选择 保持顺序 将保持在重排之前设置的相同顺序,选择 按名称排序 将按照它们的名称对相同匹配规则的元素进行排序。

  • 別名 :此选项显示在 规则别名定义 对话框中定义的别名。 您可以删除不需要的部分。

按字母顺序排序" 按钮

当您从 订单 列表中选择 Order by Name时,会出现此图标。 图标表示此规则中的项目按字母顺序排序。

导入

这个表格列出了优化导入时需要执行的操作。

条目

描述

常规

在此区域,配置通用导入选项。

选项:

  • 使用单类导入 :在代码生成或 导入优化过程中,仅导入包中的特定类。 否则,将插入导入整个包的语句。

  • 使用完全限定类名 :在代码生成或 导入优化期间,使用要导入的类的完全限定名。 否则,将插入一条常规的导入语句。

  • 为内部类插入导入 :为代码中引用的内部类创建导入。

  • 在 JavaDoc 中使用完全限定名称 :在 Javadocs 中使用完全限定的类名。 否则,将导入一个类。

  • 使用 '*' 进行导入的类计数 :请指定从一个包中导入的类的数量,直到所有导入单一类的声明被替换为一个导入整个包的声明。

  • 名称计数以使用静态导入“*” :在此字段中,指定需要从单个类中导入的成员数量,直到所有导入单个成员的声明被替换为导入整个类的声明。

JSP 导入布局

在此区域中,配置您的代码中 JSP 导入语句应如何组织。 引入的更改将在下面的 预览 面板中显示。

选项:

  • 优先选择逗号分隔的导入列表 :选择此选项可以将语句组织为逗号分隔的列表。

  • 每页指令优先使用一个导入语句 :选择此选项可为每行创建一个导入语句。

使用 '*' 导入的包

在此区域中,配置一份始终完整导入的包和类的列表。

选项:

  • Static :如果您想为所选类声明 static 导入,请选择此复选框。

  • Package :在此列的文本字段中,指定始终完全导入的包和类。

    请注意,IntelliJ IDEA 会在您输入完毕后自动在包名的末尾添加 .*

  • 选择子包 :勾选此复选框将完全导入所选包的所有子包。

  • 添加包 :点击此按钮以在包和类的列表中添加新条目。

  • 添加空格 :点击此按钮在包和类的列表中添加一个空的分隔符。

  • 删除 :点击此按钮以从列表中删除所选的包或类。

导入布局

在此区域,配置您的代码中应如何组织 import 语句。 您可以设置某些类别,使其被放置在最前方,或者最后,或者依次排列。 导入的类将按照其包进行分组,并在包内按字母顺序排序。

选项:

  • 单独排列静态导入 :如果勾选此复选框,所有静态导入将会保持在一个独立的部分中。 否则,所有的导入声明将按照指定的布局规则进行排序。

  • Static :如果您想为所选包声明静态导入,请选择此复选框。

  • Package :在此列的文本字段中,指定要导入的包。

  • 带有子包 :选中此复选框,IntelliJ IDEA 将对所选包的所有子包应用布局规则。

  • 添加包 :点击此按钮,向包列表中添加新条目。

  • 添加空白 :点击此按钮,在选定的条目后插入一个空行,这表示应在相应的导入语句之间插入一个空行。

  • 向上移动 / 向下移动 :点击这些按钮,可以在列表中上下移动包或空行,从而定义导入语句的顺序。

  • 移除 :点击此按钮以从列表中删除所选包。

代码生成

条目

描述

命名

  • 提升较长的名称 :在代码补全的查找列表中突出显示最长的名称。 如果禁用,高亮显示最短的名称。

  • 名称前缀名称后缀 :使用 IntelliJ IDEA 代码生成特性来指定生成新符号命名建议的前缀和后缀。 对于空白字段,将使用没有前缀或后缀的默认名称建议。 当您添加一个前缀值时,IntelliJ IDEA 会自动将建议的基本名称的第一个字母转换为大写。

    例如,如果静态字段的前缀定义为 s ,并且字段的类型是 Counter ,那么建议的静态字段名称将是 sCounter

缺省可见

选择生成的字段和方法的默认访问级别。

您可以直接明确指定,或选择 升级 自动提升到必要的级别。

变量声明

请指定默认情况下是否希望生成带有 final 修饰符的本地变量和参数。

注释代码

在此区域配置生成注释的代码样式(行 Ctrl+/ 和块 Ctrl+Shift+/):

  • 行注释在第一列 :在第一列开始行注释(Ctrl+/)。 如果您禁用此选项,注释将与您的代码对齐。

  • 在注释开头添加一个空格 :在行注释字符和被注释行的第一个字符之间插入一个空格。

  • 重新设置格式时强制 :在现有评论中,当您正在 重新格式化代码时,将空格插入行注释字符和被注释行的第一个字符之间。 请注意,第一个字符必须是字母数字符号,否则不会插入空格。 例如,reformatter 将会忽略 //&Lorem ipsum 的评论。

    在注释开头添加一个空格 被启动时,此选项变为可用。

  • 注释块在第一列 :在第一列开始块注释(Ctrl+Shift+/)。 如果您禁用此选项,注释将与您的代码对齐。

  • 在块注释周围添加空格 :在块注释字符和被注释文本的第一个字符之间插入一个空格。

重写方法签名

  • 插入@Override 注解(O) :在覆盖一个方法时插入 @Override 注释。

  • 重复synchronized 修饰符(S) :当您重写一个同步的方法时,请添加 synchronized 关键字。

  • 要复制的注解 :指定哪些注解应复制到您覆盖的方法中。

  • 使用外部注解(E) :提示您是希望将 注解存储在源代码中,还是 外部。 如果禁用,注解将默认添加到源代码中。

Lambda 体

如果一个 lambda 表达式调用了一个已存在的方法,最好通过方法引用来按名称引用该方法。 这些复选框影响 Lambda 可以被方法引用替换 的检查。 如果启用,相应的 lambda 表达式将作为警告高亮显示,并提供相关的快速修复。 如果禁用,代码将不会被高亮显示,但仍然可以使用意图来替换 lambda 表达式为方法引用。

  • 如果可能,请使用Class::isInstance 和 Class::cast

    例如,将 obj1 -> obj1 instanceof Foo 替换为 Foo.class::isInstance ,将 obj -> (Foo)obj 替换为 Foo.class::cast

  • 将null 检查替换为 Objects::nonNull 或 Objects::isNull

    例如,将 x -> x != null 替换为 Objects::nonNull

  • 如果可能,请使用Integer::sum 等

    例如,将 (a, b) -> a + b 替换为 Integer::sum

最后修改日期: 2025年 9月 22日