【发布时间】:2011-09-26 10:51:22
【问题描述】:
我在 actionTable.get(state) 有一个数组。 当我向数组添加一个对象时,即 Reduce,reduce 的属性似乎与它不符。 数组是 Action[] 类型,其中 Action 是 Reduce 的超类,这可能是原因吗?
将reduce添加到数组中:
actionTable.get(state)[t] = new Reduce(st.items.get(item).prod);
在添加之前检查字段头是否已定义:
System.out.println(Prod.prods.get(st.items.get(item).prod).head);
检查新添加的reduce是否有正确的head字段:
System.out.println(actionTable.get(state)[t].prod.head);
NullPointerException 出现在最后一个打印语句中。 .prod 部分已定义,但 .prod.head 为空,即使原始 prod 对象具有已定义的头部。
这是 Reduce 的构造函数:
Reduce(int pr) {
p = pr;
length = Prod.prods.get(pr).length;
prod = Prod.prods.get(pr);
}
定义了构造函数中所有赋值的RHS。所以,我不明白为什么当您通过 actionTable 访问新 Reduce 可以访问的 prod 对象中的 head 字段时没有定义它。
【问题讨论】:
标签: java class constructor superclass