Java 编译器

此首选项页面用来配置与编译、构建和检查 Java 源代码相关的各种设置。

Java 编译器首选项分为下列几部分:

常规

JDK 一致性

选项

描述

缺省值

编译器一致性级别

指定编译器一致性级别。

1.4

使用缺省一致性设置

如果启用了此选项,则将应用编译器一致性级别的缺省一致性设置。

生成的类文件兼容性

指定生成的类文件的兼容性。

1.2

源代码兼容性

指定接受的源代码的兼容性。

1.3

不允许名为“assert”的标识

如果启用了此选项,每当将“assert”用作标识时,编译器就会发出错误或警告(在 J2SE 1.4 中,“assert”是保留的关键字)。

警告

不允许名为“enum”的标识

如果启用了此选项,每当将“enum”用作标识时,编译器就会发出错误或警告(在 J2SE 5.0 中,“enum”是保留的关键字)。

警告

类文件生成

将变量属性添加到生成的类文件中

如果启用了此选项,就会将变量属性添加到类文件中。这将使局部变量名显示在调试器中(显示在明确指定了变量的位置)。生成的 .class 文件将变大。

将行号属性添加到生成的类文件中

如果启用了此选项,就会将行号信息添加到类文件中。这将使得在调试器中突出显示源代码。

将源文件名添加到生成的类文件中

如果启用了此选项,就会将源文件名添加到类文件中。这将使调试器能够显示相应的源代码。

保留未使用的局部变量

如果启用了此选项,就不会从类文件中除去未使用(即,从未读取)的局部变量。如果除去未使用的局部变量,就可能会使调试发生改变。

直接插入 finally 块

如果启用此选项,就会在生成的类文件中直接插入 finally 块。这将提高性能,但可能会使类文件更大。

构建

常规

选项

描述

缺省值

每个编译单元报告的最大问题数

指定对一个编译单元应该报告多少个问题。

100

允许在源文件夹中使用排除模式

当禁用此选项时,项目类路径中没有任何条目可以与排除模式相关联。

允许对源文件夹使用多个输出位置

当禁用此选项时,项目类路径中的任何条目都不能与特定输出位置相关联,从而不允许使用多个输出位置。

构建路径问题

构建路径出错时中止构建

允许在类路径无效时让构建器中止。

构建路径不完整

指示当类路径中的条目不存在、不合法或不可视(例如引用项目已关闭)时报告的问题的严重性。

错误

循环依赖性

指示当循环涉及到一个项目时报告的问题的严重性。

错误

不兼容的必需二进制文件

指示当一个项目需要不兼容的二进制文件时报告的问题的严重性。

忽略

输出文件夹

资源重复

指示当要将多次出现的资源复制到输出位置时报告的问题的严重性。

警告

清除项目时清空输出文件夹

指示执行完全构建操作时是否允许 Java 构建器清除输出文件夹。

已过滤的资源

不会被复制到输出文件夹的文件模式的逗号分隔列表。 

''

错误/警告

代码样式

选项

描述

缺省值

对静态成员的非静态访问

当启用此选项时,每当使用表达式接收方来访问静态字段或方法时,编译器就会发出错误或警告。应该使用类型名来限定对静态成员的引用。

警告

对静态成员的间接访问

当启用了此选项时,每当以间接方式访问静态字段或方法时,编译器就会发出错误或警告。应该使用声明类型名来对接口的静态字段进行限定。

警告

对实例字段的未限定访问

当启用了此选项时,每当编译器遇到未限定的字段访问(例如遗漏了“this”)时,它就会发出错误或警告。

忽略

未记录的空块

当启用了此选项时,每当编译器遇到不带说明性注释的空块语句时,它就会发出错误或警告。

忽略

对外层类型的不可访问成员的访问

当启用了此选项时,每当编译器模拟访问外层类型的不可访问的成员时,编译器就会发出错误或警告。这种访问可能会影响性能。

忽略

具有构造函数名的方法

使用构造函数名来命名方法通常不是良好的编程习惯。当启用了此选项时,编译器对于这种情况将发出错误或警告。

警告

未外部化字符串的使用

当启用了此选项时,对于未外部化的字符串文字(即,未使用 //$NON-NLS-<n>$ 进行标记),编译器将发出错误或警告。 

忽略

潜在的编程问题

不带 serialVersionUID 的可序列化类

当启用了此选项时,每当实现了“java.io.Serializable”的类型未包含 serialVersionUID 字段时,编译器就会发出错误或警告。

警告

赋值没有效果(例如“x = x”)

当启用了此选项时,每当赋值没有任何效果时(例如“x = x”),编译器就会发出错误或警告。

警告

可能的意外布尔赋值(例如“if (a = b)”)

当启用了此选项时,每当编译器遇到可能的意外布尔赋值(例如“if (a = b)”)时,它就会发出错误或警告。

警告

“finally”未正常结束

当启用了此选项时,每当“finally”语句未正常结束(例如包含 return 语句)时,编译器就会发出错误或警告。

警告

空语句

当启用了此选项时,每当编译器遇到空语句(例如包含多余的分号)时,它就会发出错误或警告。

忽略

在字符串并置中使用 char 数组

当启用了此选项时,每当在字符串并置中使用了 char[] 表达式时,编译器就会发出错误或警告。

"hello" + new char[]{'w','o','r','l','d'}

警告

隐藏的 catch 块

对于 try 语句局部而言,某些 catch 块可能隐藏其它内容,例如:

try { throw new java.io.CharConversionException();
} catch (java.io.CharConversionException e) {
} catch (java.io.IOException e) {}.

当启用了此选项时,对于与已校验的异常相对应的隐藏 catch 块,编译器将发出错误或警告。

警告

建立名称影子和名称冲突

字段声明隐藏了另一个字段或变量

当启用了此选项时,如果字段声明隐藏了另一个继承的字段,编译器将发出错误或警告。

忽略

局部变量声明隐藏了另一个字段或变量

当启用了此选项时,如果局部变量声明隐藏了另一个字段或变量,编译器将发出错误或警告。

忽略

包括构造函数或 setter 方法参数

当启用了此选项时,如果构造函数或 setter 方法参数隐藏了另一个字段或变量,编译器也将发出错误或警告。

类型参数隐藏了另一个类型

当启用了此选项时,如果内部类的类型参数隐藏了外部类型,编译器将发出错误或警告。

警告

方法被覆盖,但是包不可视

包缺省方法在另一个包中不可视,因此不能被覆盖。当启用了此选项时,编译器对于这种情况将发出错误或警告。

警告

接口方法与受保护的“Object”方法冲突

当启用了此选项时,每当接口定义了与非继承的 Object 方法不兼容的方法时,编译器就会发出错误或警告。在解决此冲突之前,将无法实现这样的接口,例如:

interface I {
   int clone();
}

警告

建立名称影子和名称冲突

建议不要使用的 API

当启用了此选项时,如果使用了建议不要使用的 API,编译器将发出错误或警告。

警告

指示在不建议使用的代码中使用了不建议的 API

当此选项处于启用状态时,编译器将指示在不建议使用的代码中使用不建议的 API。问题的严重性是使用“不建议使用的 API”选项控制的。

指示对不建议使用的方法的覆盖或实现

当启用了此选项时,编译器将指示对不建议使用的方法的覆盖或实现。问题的严重性是使用“不建议使用的 API”选项控制的。

被禁止的引用(访问规则)

当启用了此选项时,编译器将指示访问规则中指定的被禁止引用。

错误

不鼓励使用的引用(访问规则)

当启用了此选项时,编译器将指示访问规则中指定的不鼓励使用的引用。

警告

不必要的代码

局部变量从未被读取

当启用了此选项时,每当声明了局部变量但是从未在它的作用域中使用它时,编译器就会发出错误或警告。

警告

参数从未被读取

当启用了此选项时,每当声明了参数但是从未在它的作用域中使用它时,编译器就会发出错误或警告。

忽略

检查覆盖方法和实现方法

当启用了此选项时,每当声明了参数但是从未在它在覆盖方法或实现方法的作用域中使用它时,编译器也会发出错误或警告。

未使用的导入

当启用了此选项时,编译器将对未使用的导入引用发出错误或警告。

警告

未使用的局部成员或私有成员

当启用了此选项时,每当声明了局部成员或私有成员但是从未在同一单元中使用它们时,编译器就会发出错误或警告。

警告

不必要的 else 语句

当启用了此选项时,每当编译器遇到不必要的 else 语句(例如 if (condition) return; else doSomething();)时,它就会发出错误或警告。

忽略

不必要的强制类型转换或“instanceof”操作

当启用了此选项时,每当编译器遇到不必要的强制类型转换或“instanceof”操作(例如 if (object instanceof Object) return;)时,它就会发出错误或警告。

忽略

抛出的已校验异常的不必要声明

当启用了此选项时,每当编译器遇到抛出的异常的不必要的声明时,它就会发出错误或警告。

忽略

检查覆盖方法和实现方法

当启用了此选项时,每当编译器在覆盖方法或实现方法中遇到抛出的异常的不必要的声明时,它也会发出错误或警告。

J2SE 5.0 选项

未校验的通用类型操作

当启用了此选项时,每当编译器遇到未校验的通用类型操作时,它就会发出错误或警告。

警告

使用 final 类型绑定声明的通用类型参数

当启用了此选项时,每当编译器遇到涉及最终类型的类型绑定时,它就会发出错误或警告。

警告

vararg 自变量的不精确类型匹配

当启用了此选项时,每当编译器遇到 vararg 自变量的不精确类型匹配时,它就会发出错误或警告。

警告

装箱和拆箱转换

当启用了此选项时,每当编译器遇到装箱或拆箱转换时,它就会发出错误或警告。自动装箱可能会对性能造成负面影响。

忽略

缺少“@Override”注释

当启用了此选项时,每当编译器遇到某一覆盖了另一个已实现方法的方法,并且缺少“@Override”注释时,它就会发出错误或警告。

忽略

缺少“@Deprecated”注释

当启用了此选项时,每当编译器遇到不带附加“@Deprecated”注释的不建议使用的类型时,它就会发出错误或警告。

忽略

注释被用作超接口

当启用了此选项时,每当编译器遇到实现了注释的类型时,它就会发出错误或警告。尽管可以这样做,但这不是好的做法。

警告

并非所有枚举常量都在“switch”的范围内

当启用了此选项时,每当编译器遇到 switch 语句并且该语句未包含所引用枚举的每个枚举常量的 case 语句时,它就会发出错误或警告。

忽略

“@SuppressWarnings”中未处理的警告标记

当启用了此选项时,每当编译器遇到“@SuppressWarnings”注释中未处理的警告标记时,它就会发出错误或警告。

警告

启用“@SuppressWarnings”注释

当启用了此选项时,编译器将处理“@SuppressWarnings”注释。

相关概念

Java 构建器

相关任务

构建 Java 程序
使用构建路径
使用 JRE

相关参考

“类路径变量”首选项
“Java 构建路径”属性