![](/img/trans.png)
[英]Java: Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
[英]Java Exception in thread '“AWT-EventQueue-0”' java.lang.NullPointerException
我有一个名为Info
的类,其方法load
包含以下这段代码:
Circuito[] circuito=new Circuito[19];
for(int i=0;i<circuito.length;i++)
circuito[i] = new Circuito(nome,immPath,sfondoPath,previsioni,giri,tempoGiro,carico);
我正确地传递了所有参数(我打印了toString()方法以检查其是否有效)。 然后,在另一个名为New
类中,我有以下代码:
Info info=new Info();
info.load();
System.out.println(info.getCircuito()[0].toString());
( Info
类包含用于返回整个数组的getCircuito
方法)。
然后,我收到此错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at New.<init>(New.java:21)
第21行是System.out.print
行。
我不明白这是什么问题...谢谢您的帮助!
生产线中NPE仅有的3种可能性
System.out.println(info.getCircuito()[0].toString());
是:
null
。 无法完成,因为您之前成功调用过info.load()
。 getCircuito()
返回null
。 getCircuito()[0]
为null
。 而已。 因此,在您显示有load()
代码的情况下,可能是getCircuito()
返回null
。
编辑:找到原因。 你在打电话
Circuito[] circuito=new Circuito[19];
在您的load()
方法中。 因此,您不是将新数组分配给类变量,而是分配给本地作用域中的新变量,该范围在load()
方法之后就消失了。 更改为
circuito=new Circuito[19];
你应该没事的
肯定由于某种原因您没有填充数组。 可能是您在非常狭窄的范围(例如循环)中定义了Info
类的Circuito
类实例。
尝试调用Info类中的另一个索引。 如果可行,则问题出在索引0上。
尝试获取整个阵列并进行打印。 我猜整个数组将为NULL。
最后,检查是否在不必要的地方使用了static关键字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.