1. 概述

在本教程中,我们将了解与 @SuppressWarnings Java 注释一起使用的不同警告名称,它允许我们抑制编译器警告。这些警告名称使我们能够抑制特定的警告。可用的警告名称取决于我们的 IDE 或 Java 编译器。 Eclipse IDE 是本文的参考。

2. 警告名称

以下是 @SuppressWarnings 注释中可用的有效警告名称列表:

  • all :这是一种抑制所有警告的通配符
  • boxing :抑制与装箱/拆箱操作相关的警告
  • used :抑制未使用代码的警告
  • cast :抑制与对象强制转换操作相关的警告
  • deprecation :抑制与弃用相关的警告,例如已弃用的类或方法
  • 限制 :抑制与使用不鼓励或禁止的引用相关的警告
  • dep-ann :抑制与已弃用注释相关的警告
  • Fallthrough :抑制与 switch 语句中缺少 break 语句相关的警告
  • finally :抑制与不返回的 finally 块相关的警告
  • hide :抑制与隐藏变量的局部变量相关的警告
  • incomplete-switch :抑制与 switch 语句中缺少条目相关的警告( 枚举 情况)
  • nls :抑制与非 nls 字符串文字相关的警告
  • null :抑制与 null 分析相关的警告
  • serial :抑制与缺少的 serialVersionUID 字段相关的警告,该字段通常出现在 Serialized 类中
  • static-access :抑制与不正确的静态变量访问相关的警告
  • 合成访问 :抑制与内部类的未优化访问相关的警告
  • unchecked :抑制与未检查操作相关的警告
  • unqualified-field-access :抑制与不合格字段访问相关的警告
  • javadoc :抑制与 Javadoc 相关的警告
  • rawtypes :抑制与使用原始类型相关的警告
  • Resource :抑制与 Closeable 类型资源的使用相关的警告
  • super :抑制与在没有 super 调用的情况下覆盖方法相关的警告
  • sync-override :在覆盖 同步 方法时抑制由于缺少 同步 而导致的警告

3. 使用警告名称

本节将展示使用不同警告名称的示例。

3.1. @SuppressWarnings(“未使用”)

在下面的示例中,警告名称抑制了方法中的 usedVal 的警告:

@SuppressWarnings("unused")
void suppressUnusedWarning() {
    int usedVal = 5;
    int unusedVal = 10;  // no warning here
    List<Integer> list = new ArrayList<>();
    list.add(usedVal);
}

3.2. @SuppressWarnings(“弃用”)

在下面的示例中,警告名称抑制了使用 @deprecated 方法的警告:

@SuppressWarnings("deprecation")
void suppressDeprecatedWarning() {
    ClassWithSuppressWarningsNames cls = new ClassWithSuppressWarningsNames();
    cls.deprecatedMethod(); // no warning here
}

@Deprecated
String deprecatedMethod() {
    return "deprecated method";
}

3.3. @SuppressWarnings(“失败”)

在下面的示例中,警告名称抑制了缺少 中断 语句的警告 - 我们将它们包含在此处并注释掉,以显示否则我们会在哪里收到警告:

@SuppressWarnings("fallthrough")
String suppressFallthroughWarning() {
    int day = 5;
    switch (day) {
        case 5:
            return "This is day 5";
//          break; // no warning here
        case 10:
            return "This is day 10";
//          break; // no warning here   
        default:
            return "This default day";
    }
}

3.4. @SuppressWarnings(“串行”)

该警告名称位于类级别。在下面的示例中,警告名称会抑制 Serialized 类中缺少的 serialVersionUID (我们已将其注释掉)的警告:

@SuppressWarnings("serial")
public class ClassWithSuppressWarningsNames implements Serializable {
//    private static final long serialVersionUID = -1166032307853492833L; // no warning even though this is commented

4. 组合多个警告名称

@SuppressWarnings 注释需要一个 String 数组,因此我们可以组合多个警告名称:

@SuppressWarnings({"serial", "unchecked"})

5. 结论

本文提供了有效的 @SuppressWarnings 警告名称的列表。与往常一样,本教程中显示的所有代码示例都可以 在 GitHub 上获取。