我知道已经有很多关于@NonNull
注释的主题,但是现在大多数都已经过时Java 8了,这意味着API不再发生变化。
Annotations on Types现在是Java 8的一部分,这个问题更加合理。
所以我想要以下代码:
public BaseChecker(final @NonNull File directory, final @NonNull Consumer<File> fileConsumer) {
this.directory = directory;
this.fileConsumer = fileConsumer;
}
我有两个问题:
@NonNull
最终是否适用于运行时?在运行时工作我的意思是:
Object value
上进行注释,那么当且仅当NullPointerException
时,它才会抛出value == null
。Objects.requireNonNull(value)
类似。答案 0 :(得分:2)
是的,这种语法是可行的。但不是它没有像你建议的那样“工作”。注释根本不应该“起作用”,它们是可以检查的装饰。
然而,用AOP实现这种类型的行为是微不足道的。查看AspectJ。