【问题标题】:Does @SuppressWarnings work with warnings generated by annotations?@SuppressWarnings 是否适用于注释生成的警告?
【发布时间】:2012-03-25 07:02:56
【问题描述】:

假设我有一个生成警告的注释。注释在方法上。

例如

@AnnotationThatGeneratesAWarning
public void doSomething() {
  //stuff
}

我可以使用@SuppressWarnings 来抑制它吗? @SuppressWarnings 是否适用于注释生成的警告,还是仅适用于方法本身生成的警告?

【问题讨论】:

  • 您应该发布实际代码、注释的具体示例和正在报告的警告。
  • 我在下面的答案中发布了一个具体示例。不过,问题不在于具体实例。

标签: java annotations warnings suppress-warnings


【解决方案1】:

您使用的是什么 IDE?产生警告的代码是什么?一个好的 IDE 通常会建议在 @SuppressWarnings 中使用该字符串,但最好先尝试修复警告,如果这是不可能的,并作为最后的资源使用 @SuppressWarnings

编辑:

您可以看出@SuppressWarnings 不能与查看其documentation 的其他注释一起使用。如您所见:

@Target(value={TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})

目标包括ANNOTATION_TYPE,这意味着@SuppressWarnings不能应用于其他注释。

【讨论】:

  • 我正在使用 Eclipse,警告来自 Spring MVC 注释。 Eclipse 没有建议如何抑制警告,但我能够很容易地修复代码。不过,这并不是重点——我会编辑我的问题。
  • @CosmicFlame 我更新了我的答案,我相信现在它是你问题的答案:)
  • 是的,这就是我想要的。谢谢!
【解决方案2】:

我在 Eclipse 中测试了以下内容。注解来自 Spring MVC。

@SuppressWarnings("all")
@RequestMapping("/{foo}/somepage.do")
public void serveAPage() {

}

@RequestMapping 中的 {foo} 会生成警告,因为它没有分配给变量*。警告描述为“URI 模板变量“foo”未定义”。

@SuppressWarnings("all") 应该禁止该方法的所有警告。尽管如此,Eclipse 仍然显示警告。

据我所知,您不能使用@SuppressWarnings 来抑制由注释引起的警告。

*这是最初提示问题的代码。修复代码使其不会导致异常是微不足道的,而不是问题的重点。

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多