我用@SuppressWarnings("unchecked")
与@SuppressWarnings("null")
大多上面的方法,让没有任何警告的代码编译,但我有我的怀疑。找到了这个Stackoverflow 问题。乔恩·斯基特(Jon Skeet)为此回答了一个有趣的答案。
据他介绍,
有时Java泛型只是不允许您做您想做的事情,您需要有效地告诉编译器在执行时所做的事情实际上是合法的。
但是,如果有机会引发异常该怎么办?那抑制警告不是一个坏主意吗?我是否应该知道可能出现问题的地方?
另外,如果其他人稍后修改了我的代码并添加了一些可疑的功能却又没有删除SuppressWarnings,该怎么办?如何避免和/或有其他替代方法?
我应该使用@SuppressWarnings("unchecked")
和@SuppressWarnings("null")
吗?
更新#1
对于未检查的类型强制转换,根据此答案(由@gnat在下面的注释中指出),有必要抑制这些警告。
许多必不可少的Java库从未进行过更新,以消除对不安全类型转换的需求。抑制这些警告是必要的,以便其他更重要的警告将被注意到并得到纠正。
在禁止其他警告的情况下,仍在灰色区域中。
更新#2
根据Oracle文档(以下一些答案也提到):
作为样式问题,程序员应始终在最有效嵌套的最深层元素上使用此注释。如果要在特定方法中禁止显示警告,则应注释该方法而不是其类。