使用 @SuppressWarnings 来排除警告(@SuppressWarning を使用しての警告の排除)

从 Java 5.0 开始,可以使用 java.lang.SuppressWarning 注释来禁用与一部分编译单元相关的编译警告。
Since Java 5.0, you can disable compilation warnings relative to a subset of a compilation unit using the java.lang.SuppressWarning annotation.
Java 5.0 以降、java.lang.SuppressWarning 注釈を使用して、コンパイル・ユニットのサブセットに関するコンパイル警告を無効にできます。


使用 SuppressWarning 前 / SuppressWarningを使う前 /is used before

使用 @SuppressWarnings 来排除警告(@SuppressWarning を使用しての警告の排除)_第1张图片


使用 SuppressWarning 后 / SuppressWarningを使う後 / is used after

使用 @SuppressWarnings 来排除警告(@SuppressWarning を使用しての警告の排除)_第2张图片


使用 SuppressWarning 前、编译器就会发出警告(13行)消息以指示从未使用局部变量 unused。指定此注释后、编译器将使该局部变量以静默方式忽略此警告。这就可以保留同一编译单元或同一项目中其他位置的警告。

延伸技巧:通过使用 SuppressWarning 注解、使某行代码的"黄叹号"警告消失、这样在进行 debug 的时候就可以在原来有警告的地方很方便的进行打断点。

注解作用域:通过 SuppressWarning 源码可知其作用域为:类、接口、枚举、成员字段、方法、方法的参数、构造方法和局部变量。
建议注解应声明在最接近警告发生的位置。

SuppressWarnings 源码:
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
    String[] value();
}
扩展:
@interface Target的枚举 ElementType、这个枚举定义了注解类型可以适用于Java程序的哪些元素

ElementType 源码:
public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration */
    /** 类、接口、枚举 */
    TYPE,

    /** Field declaration (includes enum constants) */  // 成员字段(包括枚举)
    FIELD,

    /** Method declaration */   // 方法
    METHOD,

    /** Parameter declaration */    // 方法参数
    PARAMETER,

    /** Constructor declaration */  // 构造方法
    CONSTRUCTOR,

    /** Local variable declaration */   // 局部变量
    LOCAL_VARIABLE,

    /** Annotation type declaration */  // 注解类型
    ANNOTATION_TYPE,

    /** Package declaration */  // 成员字段
    PACKAGE
}

可以在 SuppressWarnings 注释中使用的标记列表如下所示:

allto 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 语句中缺少的 break 相关的警告/切り替えステートメントでの欠落している中断に関連する警告の抑止
finally to suppress warnings relative to finally block that don’t return/
抑制与未返回的 finally 块相关的警告/戻らない 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 语句(枚举 case)中缺少的条目相关的警告/切り替えステートメントでの欠落したエントリーに関連する警告の抑止 (列挙型の場合)
javadoc to suppress warnings relative to javadoc warnings/
抑制与 Javadoc 警告相关的警告/警告に関連する警告の抑止
nls to suppress warnings relative to non-nls string literals/
抑制与非 nls 字符串文字相关的警告/非 NLS 文字列リテラルに関連する警告の抑止
null to suppress warnings relative to null analysis/
抑制与 null 分析相关的警告/null を使用した分析に関連する警告の抑止
rawtypes to suppress warnings relative to un-specific types when using generics on class params/
抑制与原始类型的使用相关的警告/raw 型の使用に関連する警告の抑止
resource to suppress warnings relative to usage of resources of type Closeable/
抑制与“可关闭”类型的资源的使用相关的警告/Closeable 型のリソースの使用に関連する警告の抑止
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/
抑制由于可序列化类缺少 serialVersionUID 字段而发出的警告/シリアライズ可能クラスの欠落した serialVersionUID フィールドに関連する警告の抑止
static-access to suppress warnings relative to incorrect static access/
抑制与不正确的静态访问相关的警告/不正な静的アクセスに関連する警告の抑止
static-method to suppress warnings relative to methods that could be declared as static/
抑制与可能声明为静态方法的方法相关的警告/static として宣言される可能性のあるメソッドに関連する警告の抑止
super to suppress warnings relative to overriding a method without super invocations/
抑制与没有超级调用的情况下覆盖方法相关的警告/スーパーを呼び出さないメソッドのオーバーライドに関連する警告の抑止
synthetic-access to suppress warnings relative to unoptimized access from inner classes/
抑制与内部类中未优化的访问相关的警告/内部クラスからの最適化されていないアクセスに関連する警告の抑止
sync-override to suppress warnings because of missing synchronize when overriding a synchronized method/
抑制因覆盖同步方法时丢失同步产生的警告/synchronized 宣言されたメソッドをオーバーライドする場合に同期がないことが原因で発生する警告を抑制
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 and dead code/
抑制与未使用代码和死代码相关的警告/未使用コードおよび不要コードに関連する警告の抑止





使用 @SuppressWarnings 来排除警告(@SuppressWarning を使用しての警告の排除)_第3张图片

你可能感兴趣的:([01],Java)