Oppure

Loading
23/10/09 19:39
tasx
Ciao a tutti!!
Vado subito al sodo...
Ipotiziamo di avere tre oggetti: Condominio e Inquilino:

sorgente di Condominio:
public class Condominio {
    
    public Vector inquilini;

    public Condominio() {
        inquilini = new Vector();
    }
}


se ora io creassi l'oggetto Condominio, aggiungendoli due inquilini:


    Condominio c = new Condominio();
    c.inquilini.addElement(new Inquilino("Luca"));
    c.inquilini.addElement(new Inquilino("Piero"));


e poi lo passassi come parametro a due classi A e B, successivamente aggiungo altri due inquilini al condominio passato come parametro:

public class A {
    public A(Condominio c) {
        c.inquilini.addElement(new Inquilino("Antonio"));
        c.inquilini.addElement(new Inquilino("Roberto"));
    }
}

public class B {
    public B(Condominio c) {
        c.inquilini.addElement(new Inquilino("Francesco"));
        c.inquilini.addElement(new Inquilino("Guido"));
    }
}


se fatto questo, dopo aver aggiunto i due inquilini, nel costruttore della classe A aggiungo:
System.out.println(c.inquilini.siize());


l'output sarà: 4 o 8??

ciao ciao e grazie per l'attenzione :k::k::k::k:

ps: spero di essere stato chiaro....:-?:-?:-?
aaa
24/10/09 14:26
netarrow
gli oggetti in java sono solo come riferimento, quindi leggi/scrivi sempre lo stesso oggetto; non vengono fatte implicitamente delle copie come avviene nei tipi base.

per avere un passaggio per valore devi tu dentro al metodo/costruttore copiare l'oggetto con clone() (se poi serve una copia profonda devi implementare Cloneable, ricorsivamente clonare le istanze della classe ecc...)
Ultima modifica effettuata da netarrow 24/10/09 14:26
aaa
24/10/09 15:51
tasx
Grazie mille!!
Ma se all'oggetto condominio aggiungo un listener, sia dentro la classe A che B, con metodi diversi, al momento dell'invocazione verrà eseguito il metodo aggiunto nella classe A o in
B??

ciaociao
aaa