Java IDEs空指针警报

Java IDEs空指针警报,java,ide,Java,Ide,是否有IDE或IDE插件可以提醒开发人员可能的NPE?例如: Object[] x = getMyObjects(); if (x.length > 0){ // do my stuff } 如果IDE提醒x没有检查可能的空值,那就太好了。这将节省许多工程时间。除了约翰的答案之外 Eclipse3.4给了我一个非常好的信息,它类似于: 此时变量只能为null 起初我不敢相信,但这是真的。 这是两种表达方式: if ((var == null) && (var

是否有IDE或IDE插件可以提醒开发人员可能的NPE?例如:

Object[] x = getMyObjects();

if (x.length > 0){

   // do my stuff

}

如果IDE提醒x没有检查可能的空值,那就太好了。这将节省许多工程时间。

除了约翰的答案之外


Eclipse3.4给了我一个非常好的信息,它类似于:

此时变量只能为null

起初我不敢相信,但这是真的。 这是两种表达方式:

if ((var == null) && (var.getProperty().equals("")) {

if ((var != null) || (var..getProperty().equals("")) {

在许多其他有用的东西中,这是可以检测到的。还有一个可用的。NullPointerException本质上是编程错误

如果给定的数组为空,您可以做什么?跳过支票。更好的选择是返回空数组:

public Object [] getMyObjects() {
     /// do a lot of stuff 

    if( nothingToReturn() ){
        return new Object[0];
     } else {
         return nonNullArray;
     }
}
所以

永远不要把Npe放在第一位

虽然这会很好,但很快你就会意识到你的代码是不可读的

这就是为什么“”在OOP中是如此重要的概念(这样其他对象就不会使您的数据无效)

我认为检查外部类是否返回null是公平的(顺便说一下,应该有很好的文档记录),但是对于内部方法,真正的问题是,自己的对象不知道自己实例变量的状态


注意这对于评论来说太大了,这就是为什么我提供了一个CW答案。

您可能需要从添加插件开始,在每次保存时检查此类(以及更多)错误。如果还没有,也可以添加插件:-)

Eclipse3.5(还有AFAIR3.4)有两个空指针编译器选项

您可以在
窗口
->
首选项
->
Java
->
编译器
->
错误/警告
->
潜在的编程问题


我的首选设置是
Error
用于
Null指针访问
(这肯定会引发异常)和
Warning
用于
潜在的Null指针访问

提示:如果要返回空数组,请创建一个最终的静态数组并返回该数组。@rsp:的确,遵循Null对象模式。您可以将此添加到answer.OP在他使用Netbeans的其中一条评论中告诉您的答案中。默认情况下,我的Eclipse副本会对此发出警告。嗯。。我使用NetBeans。想知道是否有它的插件+1给你,谢谢。除了你的问题,但是
getMyObjects()
应该返回一个空数组,而不是
null
@Bill the Lizard:Quite。我真的很讨厌这种事情,除非有@NonNull和类似的注释。不幸的是,这个警告在eclipse(3.5和更早版本)中被破坏了。它也会为内核发出,比如
if(chars==null)(chars=newchar[128])[127]=ch虽然字符,但在这里它永远不能为空。
if( x.length > 0 )