正如标题所说,拥有@Nullable和@Nonull可以帮助你的ide或linter在编译时捕获bug,但为什么它有运行时保留?
答案 0 :(得分:4)
可以想象,运行时保留将允许AOP代理检测传递给@Nonnull
- 注释参数的空参数,并抛出异常或以其他方式处理它。您可以争辩说,这是一种处理运行时空检查的更好方法,即在代码中使用显式空检查。
是的,这些注释对于静态编译检查非常有用,但是没有理由它们不能在运行时用于同一目的。它们作为注释的有效性延伸到运行时域,而不像用于代码生成之类的注释。