当前位置: 首页 > 知识库问答 >
问题:

创建循环中要加载项列表的对象的新实例

雍光远
2023-03-14

我试图将对象(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);
       }

这将创建多个对象,添加9个具有diff值的diff对象。

如果(对于循环)每次发出请求时都创建数百个对象而不是9个?所以它在内存中转储,对吗?

如何避免这种情况?

提前谢谢。

共有3个答案

穆智刚
2023-03-14
MyWebServiceRequest mywebService = new MyWebServiceRequest();
for(int i=0; i< 9; i++){
   MyRequestType type= new MyRequestType ();
   type.setA(1);
   type.setB(2);
   mywebService.add(type);
   type = null;
}

如上所示,将null设置为变量type不会对内存产生任何影响。因为,该对象已经被引用到您的列表中。因此,即使您将null设置为变量type,也不会对内存泄漏产生任何影响。

如果您在实时应用程序中遇到问题,请概述应用程序和您面临的问题。

井誉
2023-03-14

因为,当您将对象创建放在循环之外时,只会创建一个对象。因此,只有该对象被添加到列表中,尽管您试图将其添加9次。

  1. 创建一个新对象循环开始
  2. 对象中设置了一些值。
  3. 对象被添加到列表中。(即列表中引用的对象)

在第二次迭代中,当值发生变化时,它在步骤1中创建的对象中发生变化,该对象在列表中被引用了10次。

希望这能澄清。

周鸿运
2023-03-14

当你这么做的时候

 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。添加(类型) 将对象添加到列表中,无论其状态是否更改,或者它是同一个对象。因为它是一个列表,而不是一个不允许重复的地图。

所以当你数到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);
   }

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

 类似资料:
  • 问题内容: 我试图将对象(JavaBean)添加到列表中。 这只会创建一个(类型)对象,因此它会向同一对象添加9次相同数据。 这将创建多个对象,并使用diff值添加9个diff对象。 如果(for循环)每次创建一个请求时都创建数百个对象而不是9个,该怎么办?那么它在内存中的转储对吗? 如何避免这种情况? 提前致谢。 问题答案: 当你这样做 该行将 对象添加到列表中,无论其状态是否更改或它是同一对象

  • 问题内容: 我不确定这个问题是否与语言无关,因此我将以Java问题的身份提出。如果你有这样的循环 循环的每次迭代都在创建新的内存空间吗?如果是这样,是否要处理旧空间?如果没有,做这样的事情更有效吗 编辑:更新了代码以更好地说明问题 问题答案: 简短的答案:即使在Java中进行开发时,也不要理会这些事情,即使这些问题中的大多数都是由JVM自己处理的。 垃圾收集器将知道该怎么做,并将根据情况尝试做最好

  • 我的代码不能工作,我在第二个循环附近得到了java.lang.NumberFormatException:输入字符串:“FromNodeSend”: 我的代码出了什么问题?

  • 我对编程有点陌生,我被卡住了。假设我在一个项目中有五个不同的类:foo1、foo2、foo3、foo4和foo5,它们都做不同但相似的事情。现在假设我需要为每个对象创建一个新对象,比如:foo1 bar1=new foo1();foo2 bar2=新的foo2();foo3 bar3=新的foo3();等等当然这是可行的,但如果我能在一个for循环中实例化我需要的所有对象,或者至少把我想要创建的所

  • 问题内容: 我如何用对象填充ArrayList,而内部的每个对象都不相同? 问题答案:

  • 问题内容: 如何使用列表中的名称创建新变量?这个: 当然不行。我该怎么办? 我想做这个: 问题答案: 我认为更适合此目的: 但是,如果您仍然想即时创建变量,则可以使用: