有效的@SuppressWarnings警告名称

2023/06/10

1. 概述

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

2. 警告名称

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

  • all:这是一种抑制所有警告的通配符
  • boxing:抑制与装箱/拆箱操作相关的警告
  • unused:抑制未使用代码的警告
  • cast:抑制与对象转换操作相关的警告
  • deprecation:抑制与弃用相关的警告,例如弃用的类或方法
  • restriction:抑制与使用不鼓励或禁止的引用相关的警告
  • dep-ann:抑制与不推荐使用的注解相关的警告
  • fallthrough :抑制与switch语句中缺少break语句相关的警告
  • finally :抑制与不返回的finally块相关的警告
  • hiding:抑制与隐藏变量的局部变量相关的警告
  • incomplete-switch :抑制与switch语句中缺失条目相关的警告(枚举大小写)
  • nls:抑制与非nls字符串文字相关的警告
  • null :抑制与null分析相关的警告
  • serial :抑制与缺少的serialVersionUID字段相关的警告,该字段通常在Serializable类
  • static-access:抑制与不正确的静态变量访问相关的警告
  • synthetic-access:抑制与来自内部类的未优化访问相关的警告
  • unchecked:禁止与未经检查的操作相关的警告
  • unqualified-field-access:抑制与不合格字段访问相关的警告
  • javadoc:抑制与Javadoc相关的警告
  • rawtypes:抑制与使用原始类型相关的警告
  • resource:抑制与使用Closeable
  • super:超级调用的方法相关的警告
  • sync-override:在覆盖同步方法抑制由于缺少同步

3. 使用警告名称

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

3.1 @SuppressWarnings(“unused”)

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

@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”)

在下面的示例中,警告名称禁止使用@deprecated方法的警告:

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

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

3.3 @SuppressWarnings(“fallthrough”)

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

@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(“serial”)

此警告名称位于类级别。在下面的示例中,警告名称抑制了Serializable类中缺少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上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章