我有一个数组在actionTable.get(状态)。 当我去添加一个onject的数组,即Reduce时,reduce的属性似乎并不符合它。 该数组的类型是Action [],其中Action是Reduce的超类,这可能是原因吗?非常具体的java构造函数和对象类问题
添加降低到阵列:
actionTable.get(state)[t] = new Reduce(st.items.get(item).prod);
检查以查看是否字段头添加它之前定义:
System.out.println(Prod.prods.get(st.items.get(item).prod).head);
检查,以查看是否新添加的减少具有正确的头字段:
System.out.println(actionTable.get(state)[t].prod.head);
A NullPointerException
发生在最后的打印语句上。 .prod
部分已定义,但.prod.head
为空,即使原始prod
对象具有已定义的头部。 这是降低的构造:
Reduce(int pr) {
p = pr;
length = Prod.prods.get(pr).length;
prod = Prod.prods.get(pr);
}
所有在构造函数中分配的RHS的定义。所以,我不明白为什么当你通过actionTable访问它时,在新的Reduce访问的prod对象内的头域没有被定义。