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



