日期:2014-05-20 浏览次数:20718 次
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]); }
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的 (基本类型系统才会自动设置默认值)
------解决方案--------------------
系统有问题?回复看不见了.
------解决方案--------------------
1L已经给你说了
数组和数组元素是两个概念
数组对象不是null不代表数组元素不是null,这是初学者常犯的错误
比如
地皮[] a = new 地皮[5]; //相当于我们申请了5块地皮,也就是a不是null
但是a[0]还是荒地,什么都没有,也就是说a[]还是null,必须我们自己去建房子它才有东西