我试图将对象(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个?所以它在内存中转储,对吗?
如何避免这种情况?
提前谢谢。
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,也不会对内存泄漏产生任何影响。
如果您在实时应用程序中遇到问题,请概述应用程序和您面临的问题。
因为,当您将对象创建放在循环之外时,只会创建一个对象。因此,只有该对象被添加到列表中,尽管您试图将其添加9次。
在第二次迭代中,当值发生变化时,它在步骤1中创建的对象中发生变化,该对象在列表中被引用了10次。
希望这能澄清。
当你这么做的时候
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,而内部的每个对象都不相同? 问题答案:
问题内容: 如何使用列表中的名称创建新变量?这个: 当然不行。我该怎么办? 我想做这个: 问题答案: 我认为更适合此目的: 但是,如果您仍然想即时创建变量,则可以使用: