私はactionTable.get(state)に配列を持っています。 アレイに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);
NullPointerException
最後の印刷ステートメントで発生します。 .prod
部分が定義されていますが、元のprod
オブジェクトに定義済みの頭部があったとしても、.prod.head
はヌルです。
Reduce(int pr) {
p = pr;
length = Prod.prods.get(pr).length;
prod = Prod.prods.get(pr);
}
コンストラクタ内の割り当てのRHSの全ての定義されています: これは、削減のためのコンストラクタです。だから、私はなぜ、新しいReduceがアクセスできるprodオブジェクト内のheadフィールドがactionTableを通してアクセスするときに定義されていないのか理解していません。