您可以使用 eclipse 编译器和 javac 都支持的 that。@SuppressWarnings("unchecked")
但请记住,注释是由编译器使用的,它可以有自己的值。JLS 仅强制编译器理解值“未选中”和“已弃用”(目前)。@SuppressWarnings
编译器供应商应将他们支持的警告名称与此注释类型一起记录。鼓励他们合作,以确保相同的名称在多个编译器中工作。
如果使用 Helios,则需要将特定选项设置为允许,而不是 ,@SuppressWarnings("unchecked")
@SuppressWarnings("rawtypes")
如果无法使用新令牌更新代码,则可以在启动 Eclipse 时设置系统属性。suppressRawWhenUnchecked=true
资源:
编辑:这是现在不可用的knol文章,用作参考,最初由Alex Miller撰写。
@SuppressWarnings Java 中的注释
用于抑制各种警告的标准注释
SuppressWarnings 注释是作为 Java SE 5 中的标准注释添加的。
定义
@SuppressWarnings注释在 Java 语言规范 9.6.1.5 节中定义。本节指出:
注释类型支持程序员控制 Java 编译器发出的警告。它包含一个元素,该元素是 的数组。如果一个程序声明是用注释来注释的,那么Java编译器不得报告任何由S1, ... ,Sk之一标识的警告,如果该警告是由注释声明或其任何部分生成的。SuppressWarnings
String
@SuppressWarnings(value = {S1, ... , Sk})
未选中的警告由字符串 “” 标识。unchecked
后面的部分还提到,可以使用 来抑制这些警告。@Deprecation
@SuppressWarnings("deprecation")
有效的警告类型
规范本身中提到的仅有的两个警告字符串是“未选中”和“弃用”。但是,Sun JDK 在编译器中使用了更大的字符串集。您可以通过执行以下操作来确定当前集:
javac -X
它将显示(除其他事项外)-Xlint 的有效设置。
例如,Sun JDK 1.5 显示:
- all - 禁止显示此代码中的所有警告
- 弃用 - 禁止使用已弃用代码的警告
- 未选中 - 禁止显示来自未选中呼叫或未选中强制转换的警告
- 回退 - 如果开关在未找到有效案例(且无默认值)的情况下失败,则禁止显示警告
- 路径 -
- 串行 - 如果可序列化类未定义串行版本UID,则禁止显示警告
- 最后 - 在 finally 内禁止返回警告(这将忽略尝试返回)
Sun JDK 1.6还添加了:
- 投
- divzero - 如果检测到整数除以零,则禁止显示警告
- 空
- 重写
- 没有
IDE 和静态分析工具通常支持大量其他可能的值,以@SuppressWarnings。这些值对应于 IDE 执行的特定静态分析检查。
日蚀
Eclipse 3.3 的 Eclipse 警告值记录在 JDT 文档中。
- 全部 - 禁止显示所有警告
- 装箱 - 禁止显示与装箱/取消装箱操作相关的警告
- 强制转换 - 抑制相对于强制转换操作的警告
- dep-ann - 禁止显示与已弃用的注释相关的警告
- 弃用 - 禁止显示与弃用相关的警告
- 回退 - 禁止显示与 switch 语句中缺少断点相关的警告
- 最后 - 相对于不返回的最终阻止,禁止显示警告
- 隐藏 - 禁止显示相对于隐藏变量的局部变量的警告
- 不完整开关 - 禁止显示与开关语句中缺少的条目相关的警告(枚举大小写)
- nls - 禁止显示相对于非 nls 字符串文本的警告
- 空 - 禁止显示相对于空分析的警告
- 限制 - 禁止显示与使用不鼓励或禁止的引用相关的警告
- 串行 - 禁止显示与可序列化类的缺少串行版本UID 字段相关的警告
- 静态访问 - 禁止显示与不正确的静态访问相关的警告
- 综合访问 - 禁止显示与来自内部类的未优化访问相关的警告
- 未选中 - 禁止显示与未选中操作相关的警告
- 不合格的字段访问 - 禁止显示与字段访问不合格的警告
- 未使用 - 禁止显示与未使用代码相关的警告
IntelliJ
网豆
例子
指定单个警告的示例:
@SuppressWarnings("unchecked")
public void methodWithScaryWarnings() {
List rawList = new ArrayList();
List<String> stringList = (List<String>)rawList;
}
使用两个警告的示例:
@SuppressWarnings({"unchecked","deprecation"})
public void methodWithScaryWarnings() {
callDeprecatedMethod();
}