[英]very specific java constructors and Object class problem
我在actionTable.get(state)有一个数组。 当我将一个onject添加到数组(即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
对象具有已定义的head,也已定义了.prod
部分,但.prod.head
为null。 这是Reduce的构造函数:
Reduce(int pr) {
p = pr;
length = Prod.prods.get(pr).length;
prod = Prod.prods.get(pr);
}
定义了构造函数中所有分配的RHS。 因此,我不理解为什么当您通过actionTable访问新的Reduce可以访问的prod对象中的head字段未定义时。
信任继承和所有。 数组最有可能涉及不同的数组实例(如果您放大/复制数组引用)。 还有一些System.out.println可以帮助您。
您始终应该做的第一件事是:在IDE中进入断点视图,选中“在抛出异常时停止”,并可能命名为NullPointerException。 然后在调试器中运行您的代码,它将完全在引发NullPointerException的位置停止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.