2020-12-26 , 1536 , 104 , 125
4.8 具体结构
4.8.1 枚举类
枚举常量间用逗号隔开,换行可选。 还允许附加空行(通常只有一个)。 这是一个样例:
private enum Answer {
YES {
@Override public String toString() {
return "yes";
}
},
NO,
MAYBE}
没有方法和文档的枚举类可写成数组初始化的格式(详见章节4.8.3.1)。
private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }
由于枚举类也是一个类,因此所有适用于其它类的格式规则也适用于枚举类。
4.8.2 变量声明
4.8.2.1 每次只声明一个变量
不要使用组合声明,如int a, b;。
4.8.2.2 需要时才声明,并尽快进行初始化
不要在一个代码块的开头把局部变量一次性都声明了,而是在第一次需要使用它时才声明。局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化。
4.8.3 数组
4.8.3.1 数组初始化:可写成块状结构
数组初始化可以写成块状结构,比如,下面的写法都是可行的:
new int[] {
0, 1, 2, 3
}
new int[] {
0,
1,
2,
3
}
new int[] {
0, 1,
2, 3
}
new int[]
{0, 1, 2, 3}
4.8.3.2 非C风格的数组声明
中括号是类型的一部分:String[] args, 而非 String args[]。
4.8.4 switch语句
术语说明: switch块的大括号内是一个或多个语句组。每个语句组包含一个或多个switch标签(case FOO:或default:),后面跟着一条或多条语句(最后一个语句组后面没有语句或者跟着多条语句)。
4.8.4.1 缩进
与其它块状结构一致,switch块中的内容缩进为4个空格。每个switch标签后新起一行,再缩进4个空格,写下一条或多条语句。
4.8.4.2 Fall-through:注释
在一个switch块内,每个语句组要么通过break、continue、return或抛出异常来终止,要么通过一条注释来说明程序将继续执行到下一个语句组, 任何能表达这个意思的注释都是可行的(典型的是用// fall through)。这个特殊的注释并不需要在最后一个语句组中出现。示例:
switch (input) {
case 1:
case 2:
prepareOneOrTwo();
// fall through
case 3:
handleOneTwoOrThree();
break;
default:
handleLargeNumber(input);
}
注意,在case 1后面不需要注释,只有在语句组的末尾需要。
4.8.4.3 default的情况要写出来
每个switch语句包括一个default语句组,即使它不包含代码。
例外:enum类型的switch语句可以省略default语句组,如果它包括覆盖该类型的所有可能值的显式情况。这使IDE或其他静态分析工具能够在错过任何情况时发出警告。
4.8.5 注解(Annotations)
注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行。这些换行不属于自动换行(章节4.5,自动换行),因此缩进级别不变。示例:
UfqiLong
@Override
@Nullable
public String getNameIfPresent() { ... }
例外: 单个的注解可以和签名的第一行出现在同一行。如:
@Override public int hashCode() { ... }
应用于字段的注解紧随文档块出现,应用于字段的多个注解允许与字段出现在同一行。如:
@Partial @Mock DataLoader loader;
参数和局部变量注解没有特定规则。
4.8.6 注释
本节讨论实现注释。 Javadoc在章节7 Javadoc中单独讲解。
任何换行符之前可以有任意空格,然后是实现注释。这样的注释使该行非空白。
4.8.6.1 块注释风格
块注释与其周围的代码在同一缩进级别。它们可以是/* ... */风格,也可以是// ...风格。对于多行的/* ... */注释,后续行必须以*开始, 并且与前一行的*对齐。
/*
* This is
* okay.
*/
// And so
// is this.
/* Or you can
* even do this. */
注释不要封闭在由星号或其它字符绘制的框架里。
提示: 当编写多行注释时,如果您希望自动代码格式化程序在必要时重新换行(段落样式),请使用/* ... */样式。大多数格式化程序不会在// ...样式注释块中重新换行。
4.8.7 修饰符
类和成员的修饰符如果存在,则按Java语言规范中推荐的顺序出现。
public protected private abstract default static final transient volatile synchronized native strictfp
4.8.8 数字字面量
long数值使用大写L后缀,而非小写(以避免与数字1混淆)。例如,3000000000L而不是3000000000l。
🔗 连载目录
🤖 智能推荐