我从一个正在编写的程序中得到一些奇怪的行为,并对如何通过bean感到好奇。
这是代码(伪代码... ish):
<bean id="Factory" class="com.xxx.xxx.Factory">
<constructor-arg name="generator" ref="Generator"/>
</bean>
<bean id="Generator" class="com.xxx.xxx.Generator">
<constructor-arg name="min" value="0"/>
<constructor-arg name="max" value="5"/>
</bean>
class Generator {
public Generator (min, max) {}
public Integer getNextValue () {
return nextValueInSequence; // min > max cyclically
}
}
class Factory{
public Factory (Generator generator) {
ArrayList<Object> objects = new ArrayList<>();
for (0 ... 4) {
Object obj = new Object(generator);
objects.add(obj);
}
}
}
我的问题是,objects
列表是否包含相同的Generator
对象?
例如:
objects.get(0).getNextValue()
会影响objects.get(1).getNextValue()
吗?
即
objects.get(0).getNextValue() > 2
objects.get(1).getNextValue() > 3
objects.get(0).getNextValue() > 4
我在整个阵列中看到了不同的对象。
答案 0 :(得分:0)
是的,arraylist的每个对象中的生成器应该是相同的。因为spring bean默认是单身。
您是否对arraylist中的生成器对象进行了==
比较?它应该是真的,因为它们都是同一个对象。是的,
objects.get(0).getNextValue()影响objects.get(1).getNextValue()
提供的getNextValue()
实施是否完整?因为在同一对象上按顺序逻辑调用getNextValue()
将始终返回不同的值。