当我将一个对象分配给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
没关系,我发现了问题。在我的forEach循环在if语句中找到正确的对象之后,我应该使用中断。不知道那是可能的..我会留给那些需要它的人
您将在循环的每一遍上更新project
。
退出循环时,它不会“突然变为空”;您将在循环的最后一遍将其设置为null。
else if (!prjct.getCode().equals(projectCode)) {
project = null;
}
[没有运行程序,仍然很明显prjct.getCode()
不等于projectCode
,因为您正在输入else if
块并设置project = null
。