[英]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.