繁体   English   中英

线程““ AWT-EventQueue-0””中的Java异常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());

是:

  • info为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.

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