You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ IDEA中@NotNull注解自动显示的原理是什么?

问题解答

注解来自IntelliJ IDEA的推断式注解

这些@NotNull和@Contract注解并不是真的存在于你的代码或依赖里,也不是注解处理器自动生成的,完全是IDEA通过静态代码分析推断出来的虚拟注解:

  • @NotNull的推断逻辑:IDEA检测到foo方法里直接调用了value.length(),一旦参数为null必然触发空指针异常,所以它判断这个参数不应该传入null,自动给参数加上虚拟的@NotNull注解,用来提示你这个潜在风险。
  • @Contract(pure = true)的推断逻辑:IDEA发现foo方法的返回值只由输入参数决定,既不会修改外部状态,也没有其他副作用,所以推断这是一个纯函数,用@Contract(pure = true)标记这个特性。

为什么没法跳转查看注解来源?

因为这些注解是IDEA在内存里动态生成的虚拟标记,根本没有实际的注解类文件对应,也没写入你的源代码,自然没法通过跳转功能定位到来源。

额外说明

这种智能推断是IDEA代码分析功能的默认特性,和项目有没有构建脚本、依赖库没关系——哪怕是单个手写的Java文件,IDEA也会做这类分析。你可以在IDEA的设置里调整这类警告的开关,但默认是开启状态的。

内容的提问来源于stack exchange,提问作者Martin Geisse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:17:08