2

我正在尝试不同的方法来摆脱我的代码中的 NPE。我在 Eclipse 中使用空值分析,我非常喜欢 @NonNullByDefault。但是今天我遇到了番石榴的可选问题:

private static Optional<Foo> bar() {
  Foo foobar = new Foo();
  return Optional.of(foobar);
}

我在返回线上得到以下评论:

Null type safety: The expression of type 'Optional<Foo>' needs unchecked conversion to conform to   '@NonNull Optional<Foo>'

我尝试使用 JSR305 注释无济于事。有没有办法让它工作(同时使用 Optional 和 @NonNull 注释)?

4

2 回答 2

0

这个问题的完整解决方案需要在 Optional API 中添加空注释。特别是 of() 应该被声明为返回 @NonNull。

在库作者注释他们的 API 之前,您将需要外部注释,正在为 Eclipse Mars 开发对外部注释的支持。请参阅https://wiki.eclipse.org/JDT_Core/Null_Analysis/External_Annotations

OTOH,我很好奇,为什么您确实希望将避免 NPE 的两个概念结合在一个项目中。

于 2015-02-26T19:51:28.550 回答
0

Guava 代码将 non-null 视为默认值,但它不使用 Eclipse 的@NonNullByDefault注解,因为它是非标准的。相反,它使用标准@Nullable注释来指示参数和返回类型可以null.

很棒的Error Prone项目提供了与此标准方法兼容的空安全检查 - 我建议使用它而不是您的 IDE 的自定义检查。

于 2017-11-22T10:08:57.363 回答