for(Object[] police :res){
    policeResstatisticsObjs.add(new PoliceResstatisticsObj(police[0].toString(), police[1].toString(),police[2].toString(),police[3].toString(),police[4].toString())); 
  }
 当res 为null  就抛空指针异常了为什么会这样啊难道还要判断res为null吗?Java对象指针异常

解决方案 »

  1.   

    你操作一个空对象,肯定会NullPointer...在for外面 加一个if(res!=null){}
      

  2.   

    这for循环怎么这么不智能啊,为空完全可以跳出循环啊
      

  3.   

    这里有两种问题:
    第一、数组为空的,不是null,那么for循环内部的code不会执行,不抛异常。
    第二、数组是null,for对一个null对象进行遍历,一定抛异常,这是预先设计好的规则,没什么智能不智能的。
      

  4.   

    只要是操作对象,最好都先判断下是否为null,这样严谨一些,谁知道在实际情况中会不会出现null呢
      

  5.   


    实际情况确实会出现null 但是java 的for循环完全可以不必要循环,抛出空指针异常根本没意义,还要我们自己去判断res是不是null,导致我每个这样的循环之前都要判断res是不是null,很是费解,感觉代码多余
      

  6.   

    如果是null的话,你那根本就不是一个对象,不是对象,你却要遍历,不抛异常那么java这门语言就垃圾,抛的很对,这就好像是用0做除数。你要么判断一下,要么,初始化的时候就先让它是一个对象,至于有没有值,那才是是否进入循环体的衡量标准,但是这个循环本身是不是对的,还得那是个对象。
      

  7.   

    遍历一个对象,指针要先指向它所在的那一块空间,在里面能否找到东西那是是否进入循环体内部的判断标准,但是如果内存空间不存在,指针自然是空指针,null是对象存在与否的标志,对象都不存在,拒绝和接受那肯定都是无意义的。
      

  8.   


    实际情况确实会出现null 但是java 的for循环完全可以不必要循环,抛出空指针异常根本没意义,还要我们自己去判断res是不是null,导致我每个这样的循环之前都要判断res是不是null,很是费解,感觉代码多余你要先弄明白 数组为空和数组为NULL是两个概念。
      

  9.   


    for循环只是一个语句,应该很难具备智能这一层次的东西。如果是一个类,你或许可以进行判断,自己捕捉异常,从而达到智能的境界,例如检测空数组。举个例子,你的int类型,你进行如此操作 int a ="FUCK".
    这个int不够智能,因为他就是一个基本类型,不具备这种判断的能力。
    你可以自己定义一个int的类型,这样就可以把这个将字符串赋值给整形的问题给解决掉。所有的智能都是程序员的智能,不是JAVA的智能,也不是Eclipse的智能。LZ应该依靠自己。
      

  10.   

    public List<RoadsRegionStateObj> getRoadsNumber() {
    String sql = "select sum(t.smoothnum) as a,sum(t.crowdnum) as b,sum(t.congestionnum) as c from T_SITUATION_REGIONSTATE t";
    Object[][] res =  DBProxy.getMultiResult(sql);
    List<RoadsRegionStateObj> roadsRegionStateObjs = new ArrayList<RoadsRegionStateObj>(); 
    if(res!=null){
    for(Object[] roads :res){
    if(roads!=null){
    roadsRegionStateObjs.add(new RoadsRegionStateObj("全市","",roads[0].toString(), roads[1].toString(), roads[2].toString())); 
    }
    }
    }
        return roadsRegionStateObjs; 
    }这个res出现了三个null 我该怎么判断啊??