繁体   English   中英

Guava可选和@NonNull批注

[英]Guava Optional and @NonNull annotation

我正在尝试以多种方式摆脱代码中的NPE。 我在Eclipse中使用无效性分析,并且我非常喜欢@NonNullByDefault。 但是今天我遇到了番石榴的Optional的问题:

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批注)?

完整的解决方案需要Optional API中的空注释。 特别是应声明of()返回@NonNull。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM