【发布时间】:2020-05-04 20:05:38
【问题描述】:
当我将一个对象分配给 foreach 循环中的现有对象时,它存在,但是当它退出循环时,它突然变为 null 并引发 nullpointerexception
Project project = new Project();
for (Project prjct: pps.getProjects()) {
if (prjct.getCode().equals(projectCode)) {
project = prjct;
System.out.println("First occurrence : " + project.toString()); //The object is present here
} else if (!prjct.getCode().equals(projectCode)) {
project = null;
}
System.out.println("Second occurrence : " + project.toString()); //Object is also present here
}
System.out.println("Third occurrence : " + project.toString()); //Throws NullPointerException
【问题讨论】:
-
请edit您的帖子并添加minimal reproducible example,以及示例输入。
-
它应该按原样工作。我的猜测是,您在循环的最后一次迭代中进入了
else if块而没有意识到。 -
@user85421 null 部分的原因是,当我使用该对象时,我可以在使用 if 语句之前测试它是否为 null。我是新来的,所以我有很多东西要学
-
附带问题:写
if (X) … else if (! X) …是多余的。else子句要执行的唯一情况是if条件为假。也就是说,我们知道X是假的,所以! X一定是真的,因此不需要检查! X是否是真的。因此if (X) … else …就足够了。
标签: java object foreach nullpointerexception assign