分配给实例变量时的 SuppressWarnings 注释

SuppressWarnings annotation when assigning to instance variable

提问人:tau 提问时间:3/14/2021 最后编辑:Ori Markotau 更新时间:3/15/2021 访问量:586

问:

我正在使用(并且无法更改)的库将原始库返回给我,因此我想禁止显示有关未经检查的强制转换的警告。不过,当我在实例变量上尝试它时,它似乎不起作用。Map

我列举了下面的案例,为简洁起见,将它们组合到一个代码示例中,即使我单独测试了它们。

class Foo {
  @SuppressWarnings("unchecked") //doesn't work
  private Map<String, String> map;

  @SuppressWarnings("unchecked") //works
  private void doSomething() {
    @SuppressWarnings("unchecked") //syntax error
    this.map = Library.getMap();
  }
}

我可以禁止显示警告的最具体位置是什么?我宁愿不在整个方法上这样做,但这是它目前对我唯一有效的地方。

Java 强制转换 警告 取消选中 Suppress-warnings

评论


答:

1赞 Ori Marko 3/14/2021 #1

您希望在出现问题时禁止显示警告,但问题在内部doSomething

this.map = Library.getMap();

你不能禁止赋值本身,所以你需要转到外部作用域,即方法或类

作为风格问题,程序员应该始终在最深嵌套的元素上使用此注释,只要它是有效的。如果要禁止显示特定方法中的警告,则应批注该方法而不是其类。

如果赋值处于初始化状态,则可以禁止它:

@SuppressWarnings("unchecked" )
private Map<String, String> map = Library.getMap();