java-pojo对象实例化在循环外部还是内部?
我有一些带有循环和基本pojo实例化的代码。在使用setter设置其属性后,循环pojo被添加到列表中。 我的问题是,在循环内部实例化pojo并在循环内部使用pojo的setter方法,或者在循环外部实例化pojo并在循环内部使用pojo的setter方法,具体来说,什么更好,为什么更好。我指的是下面代码中的pojo变量。HumanCoverageData hcd=新的HumanCoverageDatajava-pojo对象实例化在循环外部还是内部?,java,Java,我有一些带有循环和基本pojo实例化的代码。在使用setter设置其属性后,循环pojo被添加到列表中。 我的问题是,在循环内部实例化pojo并在循环内部使用pojo的setter方法,或者在循环外部实例化pojo并在循环内部使用pojo的setter方法,具体来说,什么更好,为什么更好。我指的是下面代码中的pojo变量。HumanCoverageData hcd=新的HumanCoverageData IMHO,您必须在循环中实例化POJO,因为每个步骤使用不同的对象,然后添加到列表中。如果在
IMHO,您必须在循环中实例化POJO,因为每个步骤使用不同的对象,然后添加到列表中。如果在外部实例化POJO,则必须注意内存引用在我看来,每个HumanCoverage数据都依赖于单个Coverage对象。因此,在它之外实例化HumanCoverage数据是没有意义的 无论如何,你都会重新初始化它,除非你想在列表中找到N倍的相同引用
HumanCoverageData hcd = new HumanCoverageData();
for (Coverage c : sec.getCoverage()){
hcd.setFirstName(c.getUser_name().split(",")[0]);
hcd.setLastName(c.getUser_name().split(",")[1]);
hcd.setPhoneNumber(c.getPhone_number());
hcd.setRoleCode(c.getRolecode());
hcd.setRoleDescription(null);
hcd.setUserId(c.getUser_id());
HumanCoverageDataList.add(hcd);
}
HumanCoverage数据列表将包含sec.getConverage.size乘以相同对象/相同引用的值。这是因为你只打过一次电话。在执行for循环和setter时,您所做的只是覆盖上一个值
相反,如果您想在循环之后使用它,您可以在for循环之外声明hcd,即在循环的范围之外
HumanCoverageData hcd = null;
for (Coverage c : sec.getCoverage()){
hcd = new HumanCoverageData();
hcd.setFirstName(c.getUser_name().split(",")[0]);
hcd.setLastName(c.getUser_name().split(",")[1]);
hcd.setPhoneNumber(c.getPhone_number());
hcd.setRoleCode(c.getRolecode());
hcd.setRoleDescription(null);
hcd.setUserId(c.getUser_id());
HumanCoverageDataList.add(hcd);
}
了解变量范围
HumanCoverageData hcd = null;
for (Coverage c : sec.getCoverage()){
hcd = new HumanCoverageData();
hcd.setFirstName(c.getUser_name().split(",")[0]);
hcd.setLastName(c.getUser_name().split(",")[1]);
hcd.setPhoneNumber(c.getPhone_number());
hcd.setRoleCode(c.getRolecode());
hcd.setRoleDescription(null);
hcd.setUserId(c.getUser_id());
HumanCoverageDataList.add(hcd);
}