我有一個數組在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對象內的頭域沒有被定義。