为什么checkNotNull()没有用@Nonnull注释

我发现不方便之处在于checkNotNull()番石榴中的前提条件没有标注@Nonull注释。考虑以下示例:

State(Set<Model> models, Set<Variation> variations) {

this.models = checkNotNull(models);

this.variations = checkNotNull(variations);

if (this.variations == null) {

throw new IllegalArgumentException();

}

this.engine = createEngine();

}

因此IDE找不到variations ==

null总是错误的。是否有任何特殊原因为什么不标记此前提条件@Nonull(即使其参数是使用定义的@Nullable)。

回答:

@Nonnull很抱歉,我们没有在任何地方使用过。为什么?我们尝试添加更多的空检查注释,发现:

  • 添加所有其他注释非常冗长。
  • @Nullable这就是我们所需要的NullPointerTester。诚然,对于Guava开发人员而言,这比Guava用户更为重要。
  • @Nullable似乎遇到了大多数问题。我承认很难说在用户找到其他注释之前会捕获多少未检查的错误。

详细是最主要的。它变得很疯狂,尤其是对于子类型化和参数化类型。我们试图为注释选择一个最佳位置。也许有一天我们会更改它。但就目前而言,这就是事物按原样进行的原因。

(如果我们做了一些事情,我怀疑我们会尝试@Nonnull使用默认值,@CheckForNull而不是使用例外。但是我还没有仔细研究它以确保我理解正确。)

以上是 为什么checkNotNull()没有用@Nonnull注释 的全部内容, 来源链接: utcz.com/qa/420647.html

回到顶部