小编典典

在循环中创建对象的新实例以添加到列表中

java

我试图将对象(JavaBean)添加到列表中。

     MyWebServiceRequest mywebService = new MyWebServiceRequest();
     MyRequestType type= new MyRequestType ();

       for(int i=0; i< 9; i++){
           type.setA(someDynamicValue);
           type.setB(someDynamicValue);
           mywebService.add(type);
       }

这只会创建一个(类型)对象,因此它会向同一对象添加9次相同数据。

 MyWebServiceRequest mywebService = new MyWebServiceRequest();
   for(int i=0; i< 9; i++){
           MyRequestType type= new MyRequestType ();
           type.setA(someDynamicValue);
           type.setB(someDynamicValue);
           mywebService.add(type);
       }

这将创建多个对象,并使用diff值添加9个diff对象。

如果(for循环)每次创建一个请求时都创建数百个对象而不是9个,该怎么办?那么它在内存中的转储对吗?

如何避免这种情况?

提前致谢。


阅读 551

收藏
2020-10-16

共1个答案

小编典典

当你这样做

 MyWebServiceRequest mywebService = new MyWebServiceRequest();
   MyRequestType type= new MyRequestType ();

   for(int i=0; i< 9; i++){
       type.setA(1);
       type.setB(2);
       mywebService.add(type);
   }

该行将 mywebService.add(type);对象添加到列表中,无论其状态是否更改或它是同一对象。因为它是列表,而不是不允许重复的Map。

所以计数到10,现在

 MyWebServiceRequest mywebService = new MyWebServiceRequest();


   for(int i=0; i< 9; i++){
       MyRequestType type= new MyRequestType ();
       type.setA(1);
       type.setB(2);
       mywebService.add(type);
   }

现在,代码创建了一个新对象并添加到列表中,但是每个对象都不相同。两个片段中的唯一区别是,第二个片段中的Objects不相同,但第一个片段中的Objects相同,但相加了10次。

2020-10-16