繁体   English   中英

非常具体的Java构造函数和Object类问题

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM