A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪璨 中级黑马   /  2012-6-24 16:17  /  1586 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 神马都是浮云,楼下学习。

查看全部评分

1 个回复

正序浏览
对象数组未初始化,系统默认是给null的。
1. task.mCmds只是引用了Task类中内部类Cmd的数组对象的句柄或叫引用。它只是存储了此对象数组中,首地址。
2. new Task.Cmd[cmdLength]; 是new出来数组了,但下面没有给数组初始化了,而系统给对象类数据组的元素初始化为null。而像 new int[cmdLength],系统会默认给元素赋值为0。所以,单凭你new Task.Cmd[cmdLength];一句话,JVM是不会帮你构造cmdLength-1个Task类中的Cmd类对象给你的。
----------------------------------------
随便说一句,楼主,你这种问问题法不太好哦。
直接截点代码出来,相关的背景什么的都不说,大家也不好判断呢。
最好是:

1. 问题描述:
2. 问题发现背景:
3. 问题影响广度:
4. 预想方案及测试方案结果等:.

评分

参与人数 1技术分 +6 收起 理由
wangfayin + 6 很给力!赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马