task.mCmds = new Task.Cmd[cmdLength];
Log.i("TASKS", " task cmds cmd len" + task.mCmds.length);
for (int i = 0; i < cmdLength; i++) {
        parseOneCmd(cmdsAr[i], task.mCmds[i]);
}
task.mCmds 是一个Cmd对象数组, 我明明new了一个呀结果传到 parseOneCmd(cmdsAr[i], task.mCmds[i]) 里我打印的第二个参数为null!! 求解

解决方案 »

  1.   

    new了数组还要new数组元素,LZ先弄清楚数组和数组元素的区别
    String[] sa = new String[5]; //此时sa不为null,但是sa[0]...sa[5]还是null
    sa是指向String数组的对象,但是sa[0]是指向String的对象,完全不一样
    所以要
    for (int i=0; i<sa.length; i++) {
        sa[i] = new String(i); //数组元素也要new
    }
    所以你的task.mComs虽然不是null(因为它指向一个数组对象),
    但是task.mCmds[i]还是null,因为你没有new系统是不会自动帮你new的
    (基本类型系统才会自动设置默认值)
      

  2.   

    1L已经给你说了
    数组和数组元素是两个概念
    数组对象不是null不代表数组元素不是null,这是初学者常犯的错误
    比如
    地皮[] a = new 地皮[5]; //相当于我们申请了5块地皮,也就是a不是null
    但是a[0]还是荒地,什么都没有,也就是说a[]还是null,必须我们自己去建房子它才有东西