@SuppressWarnings比较常见,理解和使用起来都很简单。
但是就这这个机会系统的整理一下。
通过源码可以看出,支持在类、属性、方法、参数、构造方法、本地变量上使用。
@SuppressWarnings注解的使用有三种:
1. @SuppressWarnings("unchecked") [抑制单类型的警告] 2. @SuppressWarnings("unchecked","rawtypes") [抑制多类型的警告] 3. @SuppressWarnings("all") [ 抑制所有类型的警告]
下面一个简单的例子:
代码语言:javascript复制public class Machine {
private List versions;
public void addVersion(String version) {
versions.add(version);
}
}
编译器会发出使用原始数据类型的警告
如果不想修复这个问题,可以通过@SuppressWarnings注解来抑制编译器的警告。
该注解允许指定忽略该方法的哪些特定警告。 不同的编译器或IDE的警告类型可能会不同,最常见的两种类型是deprecation和unchecked。
deprecation 告诉编译器忽略过时的方法或类型检查。 unchecked 告诉编译器忽略原始类型检查
代码语言:javascript复制public class Machine {
private List versions;
@SuppressWarnings("unchecked")
// or
@SuppressWarnings({"unchecked"})
public void addVersion(String version) {
versions.add(version);
}
}
如果想抑制多种类型的警告,可以采用字符串数组方式
代码语言:javascript复制@SuppressWarnings({"unchecked", "deprecated"})
Eclipse Galileo版本支持的抑制警告的名称:
关键字 | 用途 |
---|---|
all | to suppress all warnings (抑制所有警告) |
boxing | to suppress warnings relative to boxing/unboxing operations (抑制装箱、拆箱操作时候的警告) |
cast | to suppress warnings relative to cast operations (抑制映射相关的警告) |
dep-ann | to suppress warnings relative to deprecated annotation (抑制启用注释的警告) |
deprecation | to suppress warnings relative to deprecation (抑制过期方法警告) |
fallthrough | to suppress warnings relative to missing breaks in switch statements (抑制确在switch中缺失breaks的警告) |
finally | to suppress warnings relative to finally block that don’t return (抑制finally模块没有返回的警告) |
hiding | to suppress warnings relative to locals that hide variable(抑制相对于隐藏变量的局部变量的警告) |
incomplete-switch | to suppress warnings relative to missing entries in a switch statement (enum case)(忽略没有完整的switch语句) |
nls | to suppress warnings relative to non-nls string literals( 忽略非nls格式的字符) |
null | to suppress warnings relative to null analysis( 忽略对null的操作) |
rawtypes | to suppress warnings relative to un-specific types when using generics on class params( 使用generics时忽略没有指定相应的类型) |
restriction | to suppress warnings relative to usage of discouraged or forbidden references( 抑制禁止使用劝阻或禁止引用的警告) |
serial | to suppress warnings relative to missing serialVersionUID field for a serializable class( 忽略在serializable类中没有声明serialVersionUID变量) |
static-access | to suppress warnings relative to incorrect static access( 抑制不正确的静态访问方式警告) |
synthetic-access | to suppress warnings relative to unoptimized access from inner classes( 抑制子类没有按最优方法访问内部类的警告) |
unchecked | to suppress warnings relative to unchecked operations( 抑制没有进行类型检查操作的警告) |
unqualified-field-access | to suppress warnings relative to field access unqualified( 抑制没有权限访问的域的警告) |
unused | to suppress warnings relative to unused code( 抑制没被使用过的代码的警告) |
参考文章:
https://www.baeldung.com/java-suppresswarnings
https://www.cnblogs.com/perfei456/p/8962167.html