JetBrains注解@NotNull/@Nullable/@Contract

这篇博客介绍了JetBrains的注解库如何帮助开发者在IDE中预防空指针异常。通过@NotNull和@Nullable注解,IDE可以智能提示处理可能的null值,提高代码质量。此外,还提到了@TestOnly、@Nls和@NonNls等特殊注解的用途,以及@Contract注解在定义函数行为上的作用。设置IDE显示这些注解的提示,可以增强代码的可读性和健壮性。

JetBrains 的注解库,然后通过在 IDE 里面提示你处理那些可能为 null 的值(编译器没法检查并提示)避免NullPointerException。

对于空指针异常,Java 只有 IDE 警告。

正式名称叫: inferred annotations 推断注解

  1. 注解出现在2010年
  2. 自动提示出现在2014年
  • 依赖
annotations-java8.jar

这个包在任何一个 JetBrains IDE 的安装目录里面都有。

1、@TestOnly- 仅测试用
import org.jetbrains.annotations.TestOnly;

用于标记,专门给单元测试服务相关代码的注解。

2、@NotNull 和 @Nullable
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

一般被用来注解带有返回值的方法、方法参数、类的成员变量。

  1. 当 @NotNull 注解一个方法参数的时候, IDE 会在调用处提示你处理 null 的情况(当然,如果 IDE 语义上认为你传进去的参数不可能是 Null ,那么当然没有提示了); 当它注解一个有返回值的方法的时候,它会检查返回值是否可能是 null 。如果可能,那也会有提示。
  2. 当 @Nullable 注解一个方法参数的时候, IDE 会在方法内部提示你处理该参数为 null 的情况; 当它注解一个有返回值的方法的时候,会在调用处提示你处理方法返回值为 null 的情况。
3、@Nls 和 @NonNls
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;

用于修饰字符串

  1. @Nls 用于修饰自然语言字符串;e.g. “今天,你好”
  2. @NonNls 用于修饰非自然语言;e.g. “dfisfjix”
4、@Contract
import org.jetbrains.annotations.Contract;

e.g. @Contract(value = “null -> false”, pure = true)

我称其为约定注解。这是一个有属性、用于修饰带参数并且返回值不为 void 的普通方法构造方法的注解,这个注解有两个属性。一个 value 的字符串属性,还有一个 pure 的布尔属性。

  1. 能描述的内容更详细,能在一定程度上代替 @NotNull 和 @Nullable
  2. pure,表示被注解的函数(包含普通方法、静态方法和构造方法)是否为纯函数。

纯函数:如果一个函数,对于特定的输入,都将产生对应的唯一的输出,并且不会影响别的东西(即没有副作用),那么这个函数就是纯函数。F(x) = 2x…;可以看出是幂等的

  1. value
    场景:你给我 null ,我就还你 false
@Contract(value = "null -> false", pure = true)
public boolean equals(@Nullable Object obj) {

可用值:

null // null
!null // not null
true // boolean value true
false // boolean value falses
fail // means this function will not work in this case
_ // any value

下划线代表通配符
e.g. 返回值为非 null(@NotNull)。然后传进来任何值(两个参数_代表任意),都不会返回null。纯函数(pure = true)

@NotNull
@Contract(value = "_, _ -> !null", pure = true)
public static ExgcdRes exgcd(long a, long b) {
	return new ExgcdRes(exgcdJni(a, b));
}
最后如何在自己的代码中自动显示
  1. Press Ctrl+Alt+S to open IDE settings and select Editor | Inlay Hints | Java | Annotations.
  2. Make sure that the Show hints for option is enabled and select the Inferred annotations checkbox.
  3. Apply the changes and close the dialog.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值