gpt4 book ai didi

java - 为什么 checkNotNull() 没有注解 @Nonnull

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:53 27 4
gpt4 key购买 nike

我发现 guava 中的 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 始终为 false。是否有任何特殊原因导致此前提条件未标记为 @Nonull(即使它的参数是使用 @Nullable 定义的)。

最佳答案

We haven't used @Nonnull anywhere , 对不起。为什么?我们尝试添加更多空检查注释,我们发现:

  • 添加所有其他注释非常冗长。
  • @Nullable 是我们为 NullPointerTester 所需要的。不可否认,这对 Guava 开发人员来说比 Guava 用户更重要。
  • @Nullable 似乎已经解决了大部分问题。我承认很难说在用户发现之前其他注释会捕获多少未 checkin 的错误。

冗长是主要的事情。它变得疯狂,尤其是对于子类型化和参数化类型。我们试图为注释选择一个最佳位置。也许有一天我们会改变它。不过,就目前而言,这就是为什么事情是这样的。

(如果我们确实做了一些事情,我怀疑我们会尝试让 @Nonnull 成为默认值,而使用 @CheckForNull 作为异常(exception)。但我没有仔细研究了它以确保我的意思是正确的。)

关于java - 为什么 checkNotNull() 没有注解 @Nonnull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8382402/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com