提问人:tau 提问时间:3/14/2021 最后编辑:Ori Markotau 更新时间:3/15/2021 访问量:586
分配给实例变量时的 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();
}
}
我可以禁止显示警告的最具体位置是什么?我宁愿不在整个方法上这样做,但这是它目前对我唯一有效的地方。
答:
1赞
Ori Marko
3/14/2021
#1
您希望在出现问题时禁止显示警告,但问题在内部doSomething
this.map = Library.getMap();
你不能禁止赋值本身,所以你需要转到外部作用域,即方法或类
作为风格问题,程序员应该始终在最深嵌套的元素上使用此注释,只要它是有效的。如果要禁止显示特定方法中的警告,则应批注该方法而不是其类。
如果赋值处于初始化状态,则可以禁止它:
@SuppressWarnings("unchecked" )
private Map<String, String> map = Library.getMap();
评论