java-pojo对象实例化在循环外部还是内部?

java-pojo对象实例化在循环外部还是内部?,java,Java,我有一些带有循环和基本pojo实例化的代码。在使用setter设置其属性后,循环pojo被添加到列表中。 我的问题是,在循环内部实例化pojo并在循环内部使用pojo的setter方法,或者在循环外部实例化pojo并在循环内部使用pojo的setter方法,具体来说,什么更好,为什么更好。我指的是下面代码中的pojo变量。HumanCoverageData hcd=新的HumanCoverageData IMHO,您必须在循环中实例化POJO,因为每个步骤使用不同的对象,然后添加到列表中。如果在

我有一些带有循环和基本pojo实例化的代码。在使用setter设置其属性后,循环pojo被添加到列表中。 我的问题是,在循环内部实例化pojo并在循环内部使用pojo的setter方法,或者在循环外部实例化pojo并在循环内部使用pojo的setter方法,具体来说,什么更好,为什么更好。我指的是下面代码中的pojo变量。HumanCoverageData hcd=新的HumanCoverageData


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);
}