2017-11-06 36 views
1

私が書いているプログラムから奇妙な振る舞いをしています。ここで他のオブジェクトに継承されたSpring Singletons

コード(擬似コード...っぽい)である:

<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の各オブジェクトのジェネレータは同じである必要があります。なぜなら、豆はデフォルトではシングルトンだからです。

あなたはarraylistのジェネレータオブジェクトについて==の比較を行っていますか?それらのすべてが同じオブジェクトであるため、そうでなければなりません。そして、はい、

objects.get(0).getNextValueは()objects.getに影響(1).getNextValue()

getNextValue()実装が完了してますか?なぜなら、論理的に同じオブジェクトに対してgetNextValue()を呼び出すと、常に異なる値が返されるからです。

関連する問題