[英]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.