有人可以解释为什么退出forEach循环时forEach循环内的已分配对象变为空吗?

问题描述 投票:0回答:1

当我将一个对象分配给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
java object foreach nullpointerexception assign
1个回答
1
投票

没关系,我发现了问题。在我的forEach循环在if语句中找到正确的对象之后,我应该使用中断。不知道那是可能的..我会留给那些需要它的人


0
投票

您将在循环的每一遍上更新project

退出循环时,它不会“突然变为空”;您将在循环的最后一遍将其设置为null。

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

[没有运行程序,仍然很明显prjct.getCode()不等于projectCode,因为您正在输入else if块并设置project = null

© www.soinside.com 2019 - 2024. All rights reserved.