【问题标题】:SuppressWarnings annotation when assigning to instance variable分配给实例变量时的 SuppressWarnings 注释
【发布时间】:2021-03-14 09:20:41
【问题描述】:

我正在使用(并且无法更改)的库有一个原始的 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 casting warnings suppress-warnings unchecked


    【解决方案1】:

    您希望在出现问题时取消警告,问题在 doSomething 行内

    this.map = Library.getMap();
    

    你不能抑制赋值本身,所以你需要去外部范围,即method or the class

    作为一种风格,程序员应该始终在最有效的嵌套元素上使用这个注解。如果您想禁止在特定方法中显示警告,则应注释该方法而不是其类。

    如果你的赋值是在初始化中,你可以取消它:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多