我尝试了在代码中摆脱NPE的不同方法。我在Eclipse中使用nullness分析,我非常喜欢@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注释)?
答案 0 :(得分:0)
此问题的完整解决方案需要在Optional API中使用null注释。特别是()应声明返回@NonNull。
在库作者注释其API之前,您将需要外部注释,正在为Eclipse Mars开发支持。 见https://wiki.eclipse.org/JDT_Core/Null_Analysis/External_Annotations
OTOH,我很好奇,为什么你们确实想要将NPE避免的两个概念合并到一个项目中。
答案 1 :(得分:0)
Guava代码将非null视为默认值,但它不使用Eclipse的@NonNullByDefault
注释,因为它是非标准的。相反,它使用标准@Nullable
注释来指示可以为null
的参数和返回类型。
令人敬畏的Error Prone项目提供了与此标准方法兼容的空安全检查 - 我建议使用它而不是IDE的自定义检查。