分配给实例变量时的 SuppressWarnings 注释
SuppressWarnings annotation when assigning to instance variable
我正在使用(且无法更改)的库有一个原始的 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();
}
}
我可以抑制警告的最具体位置是什么?我不想在整个方法中都这样做,但这是目前唯一对我有用的地方。
您希望在出现问题时抑制警告,问题在 doSomething
行
内
this.map = Library.getMap();
您无法抑制赋值本身,因此您需要转到外部范围,即 method or the class
As a matter of style, programmers should always use this annotation on the most deeply nested element where it is effective. If you want to suppress a warning in a particular method, you should annotate that method rather than its class.
如果你的赋值是在初始化中,你可以抑制它:
@SuppressWarnings("unchecked" )
private Map<String, String> map = Library.getMap();
我正在使用(且无法更改)的库有一个原始的 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();
}
}
我可以抑制警告的最具体位置是什么?我不想在整个方法中都这样做,但这是目前唯一对我有用的地方。
您希望在出现问题时抑制警告,问题在 doSomething
行
this.map = Library.getMap();
您无法抑制赋值本身,因此您需要转到外部范围,即 method or the class
As a matter of style, programmers should always use this annotation on the most deeply nested element where it is effective. If you want to suppress a warning in a particular method, you should annotate that method rather than its class.
如果你的赋值是在初始化中,你可以抑制它:
@SuppressWarnings("unchecked" )
private Map<String, String> map = Library.getMap();