【发布时间】:2015-06-20 03:18:24
【问题描述】:
如果我写这样的东西
java.util.Optional<String> optional = null;
或者作为一个字段(没有初始化值,也不在构造函数中)
private Optional<String> optional;
或稍后在代码中
optional = null;
我想我至少应该得到一个警告。我们发现了一些意外的 NullpointerExceptions,这些异常很晚才被发现,因为没有人预料到可能会有 Optional 的空实例(这显然是一个错误)。
我尝试了 Eclipse 和 IntelliJ,但都没有提及。我也没有找到插件。没有这样的检查是有原因的吗?还是在某处实施?
【问题讨论】:
-
没有这样的检查。这使得可选的另一个候选者检查它们是否为空......
-
每个最新的 IDE 都应该支持
@Nullable、@NonNull和@NonNullByDefault注释……例如,对于 Eclipse,请参阅 help.eclipse.org/juno/topic/org.eclipse.jdt.doc.user/tasks/… -
所有解决方案通常都是为了避免 NPE。启用这些检查会在我们的项目中导致数百个警告。带有注释的注释并非无趣,但我不想在我的项目中使用特定于 Eclipse 的注释,然后我仍然需要确保注释放置正确。
-
@Marcel:您不需要特定于 Eclipse 的注释。您可以在项目中使用您想要的任何包和名称声明它们,然后将 Eclipse 配置为使用 your 注释,但我建议保留相同的简单名称并仅调整包,以便每个开发人员都能认识这些commonly known annotations。当然你必须将这些注释放在正确的位置,如果你不告诉他们,你会如何期望编译器知道哪些变量可以是
null,哪些不是?
标签: java eclipse intellij-idea ide java-8