解决未知的枚举常量 javax.annotation.meta.When.MAYBE 警告

今天编写一段代码后,编译发现报 未知的枚举常量 javax.annotation.meta.When.MAYBE 警告,回顾代码,未发现程序中有相关引用。百思不得解 ????

场景复现

网上一阵搜索,代码一阵调整, 最终发现是 @Nullable 注解的问题。当使用 spring 的 @Nullable 时,编译代码会报 未知的枚举常量 javax.annotation.meta.When.MAYBE 异常。

代码:

import org.springframework.lang.Nullable;

public class Test {
    public void tet(@Nullable String name) {
        System.out.println(name);
    }
}

编译结果:

[WARNING] 未知的枚举常量 javax.annotation.meta.When.MAYBE 原因: 找不到javax.annotation.meta.When的类文件

解决方法

经实验发现了 3 种解决方法:

  1. 删除 @Nullable 注解

    从代码中删除 @Nullable 注解,在编译时就不会有该警告信息

    import org.springframework.lang.Nullable;
    
    public class Test {
        public void tet(@Nullable String name) {
            System.out.println(name);
        }
    }

  2. 用 jakarta 的 @Nullable

    使用 jakarta 的 @Nullable 替换 spring 的 @Nullable 也可解决该问题,代码如下

    import jakarta.annotation.Nullable;
    ​
    public class Test {
        public void tet(@Nullable String name) {
            System.out.println(name);
        }
    }

    使用该解决方案时,如需同时引用 spring 的 @NonNull 注解时,看起会稍显别扭。当然此时 spring 的 @NonNull注解也可使用 jakarta 的 @Nonnull注解代替,这样看起来会舒服些。

    import jakarta.annotation.Nonnull;
    import jakarta.annotation.Nullable;
    import org.springframework.lang.NonNull;
    ​
    public class Test {
        public void tet(@Nullable String name, @NonNull String code, @Nonnull String Id) {
            System.out.println(name);
        }
    }
  3. 通过引入第三方 jar 包来解决

    1. JSR305 包

      • google JSR305包

      <dependency>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>jsr305</artifactId>
          <version>3.0.2</version>
      </dependency>
      • sourceforge JSR305包

      <dependency>
          <groupId>net.sourceforge.findbugs</groupId>
          <artifactId>jsr305</artifactId>
          <version>1.3.7</version>
      </dependency>
    2. annotations 包

      <dependency>
          <groupId>com.google.code.findbugs</groupId>
          <artifactId>annotations</artifactId>
          <version>3.0.1</version>
      </dependency>

@Nullable 注解说明

@Nullable 是一种用于标记 【方法参数】、【方法返回值】 、【字段】的注解,用于表示这些元素可以为null。它主要用于静态代码分析工具、IDE或其他工具来检测潜在的空指针异常问题。

使用 @Nullable 注解可以提高代码的可读性,并帮助静态代码分析工具识别潜在的空指针异常问题。但需要注意的是,该注解只是一种提示,并不能完全消除空指针异常的发生。需要遵循良好的编码实践来确保程序的正确性和稳定性。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值