Java IDE空指针警报

时间:2010-01-20 15:57:43

标签: java ide

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

Object[] x = getMyObjects();

if (x.length > 0){

   // do my stuff

}

如果IDE警告不检查x是否存在可能的空值,那将是很好的。这将节省许多工程时间..

5 个答案:

答案 0 :(得分:6)

这是FindBugs可以在许多其他有用的东西中检测到的东西。还有Eclipse plugin可用。

答案 1 :(得分:3)

NullPointerExceptions本质上是编程错误。

如果给定的数组为空,你能做什么? A.跳过支票。更好的选择是返回一个空数组:

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

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

所以

if( x.length > 0 ) 

永远不要把Npe扔到第一位。

虽然很好,很快你就会意识到你的代码将无法读取。

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

我认为检查外部类是否返回null是合理的(顺便说一句,这应该被很好地记录)但是对于内部方法,真正的问题是,自己的对象不知道它自己的实例变量的状态

注意这对于评论而言太大了,这就是我提供CW答案的原因。

答案 2 :(得分:3)

您可能希望首先添加FindBugs插件,以便在每次保存时检查此类(以及更多)错误。如果您还没有,请添加CheckStyle插件: - )

答案 3 :(得分:1)

除了约翰的回答......


Eclipse 3.4给了我一个很好的信息,就像:

  

此时变量只能为空。

一开始我简直不敢相信,但确实如此。 这是两个表达式:

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

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

答案 4 :(得分:1)

Eclipse 3.5(以及AFAIR 3.4)也有两个Nullpointers的编译器选项。

您可以在Window - >找到它们。 Preferences - > Java - > Compiler - > Error/Warnings - > Potential programming problems

我的首选设置是Error Null pointer access(这些是明确提出例外情况)Warning的{​​{1}}。