为什么我不能抑制包裹上的警告?

时间:2012-01-18 13:17:26

标签: java annotations

我从javadoc看到@SuppressWarnings注释适用于

TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE

目标。为什么它也不适用于PACKAGE

我有一些生成的代码,其中包含一些原始类型警告。我希望能够为生成的类添加package-info.java文件(在一个单独的物理目录中但是相同的java包),它告诉eclipse忽略从包中生成的类发出的任何原始类型警告。 / p>

为什么不支持?是否有另一种方法可以抑制整个包装中的警告?

2 个答案:

答案 0 :(得分:8)

在旧版错误报告(状态 - 已关闭,无法修复)的响应中解释了不允许在包级别禁止警告的原因:Allow SuppressWarnings to be specified at the package level

  

警告实际上表明了潜在的问题   生成的代码。

     

目前,SuppressWarnings具有理想的属性   只影响词汇嵌套代码。这意味着你   可以立即查看是否可以抑制警告   您正在阅读的代码。

     

此提案违反此属性以解决不常见问题   在大多数情况下可以解决的问题。

该回复中还提出了一些解决方法。

  
      
  1. 使用-source 1.4和-target 5自行编译生成的代码。

  2.   
  3. 请求使用suppresswarnings的javacc的更新版本   或者不生成导致警告的代码。

  4.   

我认为第一个建议,将生成的代码放在自己的项目中,应该适合你。第二个建议看起来更像是错误报告中的问题。我不知道你是否使用javacc。

答案 1 :(得分:1)

好问题。可能这将在未来由Oracle修复。

但现在我可以建议你以下。将所有生成的代码放入单独的项目。 BTW这是常见的做法。然后配置此项目以耐心警告。例如,在eclipse中,您可以打开项目属性/ Java编译器/错误/警告,选择“启用项目特定设置”并禁用所有警告。