2017-11-06 1 views
1

Ich bekomme ein seltsames Verhalten von einem Programm, das ich schreibe und bin gespannt wie Bohnen weitergegeben werden. HierSpring Singletons in andere Objekte übergeben

ist der Code (Pseudo-Code ... 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); 
     } 

    } 

} 

Meine Frage ist, sollte die Liste der objects enthalten die gleiche Generator Objekt?

Zum Beispiel:

Hat objects.get(0).getNextValue()objects.get(1).getNextValue() beeinflussen?

heißt

objects.get(0).getNextValue() > 2 
objects.get(1).getNextValue() > 3 
objects.get(0).getNextValue() > 4 

ich verschiedene Objekte über das Array zu sehen.

+0

hat Object-Klasse eine solche Art von Konstruktor? –

Antwort

0

Ja, der Generator in jedem Objekt der Arraylist sollte gleich sein. Weil Frühlingsbohnen standardmäßig Singleton sind.

haben Sie einen == Vergleich auf den Generator-Objekten in der Arraylist gemacht? Es sollte wahr sein, weil sie alle das gleiche Objekt sind. Und ja,

objects.get (0) .getNextValue() wirkt sich objects.get (1) .getNextValue()

Ist getNextValue() Implementierung vollständig zur Verfügung gestellt? Da der logische Aufruf von getNextValue() sequenziell für dasselbe Objekt immer unterschiedliche Werte zurückgibt.