如何解决即使没有任何null对象,我也有NullPointerException为什么是这样?
我正在尝试为Java 14中的增强AI创建神经网络,并且我将Main类和AGENT类分开以提高可读性。在main()方法中,我像第25行一样创建一个新的AGENT对象:
AGENT agent = new AGENT();
并且当我运行程序时,我希望没有异常地创建对象并运行一些函数调用,但是我却得到了NullPointerException:
Exception in thread "main" java.lang.NullPointerException
at com.company.AGENT.<init>(AGENT.java:19)
at com.company.Main.main(Main.java:25)
当我查看AGENT类进行尝试和调试时,我发现了第19行:
neural_network[j].add(new Node());
我很困惑,因为Node_object,neuro_network变量或Neuro_network数组内部包含的ArrayList都不应该为null。我检查了一下Neuro_network数组的定义是否存在问题:
private ArrayList<Node>[] neural_network = new ArrayList[5];
但是定义似乎还可以。最终,我检查了是否将参数添加到ArrayList的定义中是否有帮助,或者从类型转换中删除该参数是否有帮助,这样做时我遇到了终止程序的错误,而不是我从NullPointerException得到的运行时错误。我不确定导致此问题的null对象在哪里。
要重现,请在main()方法内部的Main类中创建一个对象;在该对象的类中,创建一个带有ArrayLists数组的私有变量,该数组存储第三个对象,并将第三个类型的新对象添加到ArrayLists中。
解决方法
您已初始化数组,但尚未初始化数组的元素。在您的AGENT构造函数中:
for (int i = 0; i < neural_network.length; i += 1) {
neural_network[i] = new ArrayList<>();
}
在尝试添加节点之前。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。