有人可以解释为什么 forEach 循环中分配的对象在退出 forEach 循环时变为 null 吗?

Can someone explain why the assigned object inside forEach loop becomes null when it exits the forEach loop?

当我在 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 每次循环。

退出循环时不会"suddenly become null";您在循环的最后一次将其设置为 null。

else if (!prjct.getCode().equals(projectCode)) {
    project = null;
}

没有运行你的程序,还是很明显prjct.getCode()不等于projectCode,因为你是进入else if块,设置project = null.