春天单身人士传入其他物体

时间:2017-11-06 04:27:47

标签: java spring

我从一个正在编写的程序中得到一些奇怪的行为,并对如何通过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

我在整个阵列中看到了不同的对象。

1 个答案:

答案 0 :(得分:0)

是的,arraylist的每个对象中的生成器应该是相同的。因为spring bean默认是单身。

您是否对arraylist中的生成器对象进行了==比较?它应该是真的,因为它们都是同一个对象。是的,

  

objects.get(0).getNextValue()影响objects.get(1).getNextValue()

提供的getNextValue()实施是否完整?因为在同一对象上按顺序逻辑调用getNextValue()将始终返回不同的值。