错误/警告

指示 打开“错误/警告”首选项页 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 块,编译器将发出错误或警告。

警告

vararg 参数的不精确类型匹配

如果启用此选项,则每当编译器遇到 vararg 参数的不精确类型匹配时,它就会发出错误或警告。

警告

装箱和拆箱转换

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

忽略

“切换(switch)”时并未转换枚举类型常量

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

忽略

“switch”case 跳转

如果启用此选项,则每当编译器遇到未包含“break”语句的 switch case 时,它就会发出错误或警告。允许空的 switch case。

忽略

空引用

如果启用此选项,则当编译器遇到解除引用可能为空的局部变量时,它就会发出错误或警告。请注意,分析非常保守,它只考虑存在疑问的情况。

忽略

建立名称影子和名称冲突

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

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

忽略

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

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

忽略

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

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

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

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

警告

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

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

警告

接口方法与受保护的“对象”方法相冲突

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

interface I {
   int clone();
}

警告

建议不要使用和限制使用的 API

建议不要使用的 API

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

警告

在建议不要使用的代码中使用了建议不要使用的 API 时发出信号

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

在覆盖或实现建议不要使用的方法时发出信号

当启用了此选项时,编译器将在覆盖或实现建议不要使用的方法时发出信号。问题的严重性由“建议不要使用的 API”选项控制。

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

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

错误

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

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

警告

不必要的代码

局部变量从未被读取

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

警告

参数从未被读取

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

忽略

检查覆盖和实现方法

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

未使用的导入

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

警告

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

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

警告

不必要的 else 语句

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

忽略

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

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

忽略

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

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

忽略

检查覆盖和实现方法

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

未使用中断/继续标签

如果启用此选项,则每当编译器遇到未使用的“中断”或“继续”标签时,它就会发出错误或警告。

警告

通用类型

未校验的通用类型操作

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

警告

使用原始类型

如果启用此选项,则每当编译器遇到使用原始类型(例如,List 而不是 List<String>)的情况时,它就会发出错误或警告。

忽略

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

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

警告

注释

缺少“@Override”注释

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

忽略

缺少“@Deprecated”注释

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

忽略

注释被用作超接口

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

警告

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

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

警告

启用“@SuppressWarnings”注释

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

相关概念

“问题”视图
快速修正
Java 构建器