@NonNull注释最终可以在运行时的java 8中使用吗?

时间:2014-03-13 12:45:44

标签: java annotations java-8

我知道已经有很多关于@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;
}

我有两个问题:

  1. 这种语法是否可行?
  2. @NonNull最终是否适用于运行时?
  3. 在运行时工作我的意思是:

    • 如果在Object value上进行注释,那么当且仅当NullPointerException时,它才会抛出value == null
    • 此行为与Objects.requireNonNull(value)类似。

1 个答案:

答案 0 :(得分:2)

是的,这种语法是可行的。但不是它没有像你建议的那样“工作”。注释根本不应该“起作用”,它们是可以检查的装饰。

然而,用AOP实现这种类型的行为是微不足道的。查看AspectJ。