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

2023-11-27

我发现不方便的是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代替例外。但我还没有对其进行足够的研究以确保我的含义是正确的。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 checkNotNull() 没有使用 @Nonnull 注解 的相关文章

随机推荐