日期:2014-05-20  浏览次数:20704 次

帮我看看 传值进去 怎么变成null了???
Java code

        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!! 求解

------解决方案--------------------
Java code
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,必须我们自己去建房子它才有东西