Ultima modifica da un moderatore:
Buonasera, mi approccio a Java da poco tempo e ho un problema che non riesco a risolvere, chiedo il vostro aiuto e ringrazio chiunque si renda disponibile.
Vi faccio un esempio pratico per rendere il tutto più comprensibile.
Ho creato 2 classi:
Automobile: con attributi marca, modello e una variabile booleana disponibilita.
Concessionario: con attributi nome e un ArrayList di tipo Automobile.
Nella classe Concessionario ho creato un metodo che aggiunge un automobile alla lista presente, e un metodo che passando in input un oggetto automobile setta la disponibilita su true.
Il problema è che nonostante io stia lavorando nella lista, quindi sto andando a modificare l'indice nella lista dove è presente l'oggetto in questione, la disponibilità viene settata per l'oggetto e non per l'oggetto solo in quella specifica lista , probabilmente in quanto l'oggetto viene passato per riferimento e quindi l'indirizzo di memoria che andiamo a modificare è lo stesso.
Dunque se io voglio creare 2 concessionari e inserire una macchina in entrambi ma settare la disponibilità nel concessionario 1 a true e nel concessionario 2 a false, non è possibile.
Esiste dunque un metodo pratico per modificare l'oggetto della lista solo per l'oggetto interessato?
Ho pensato che una soluzione sarebbe ogni volta che si vuole aggiungere una macchina alla lista di un concessionario, di creare un nuovo oggetto di tipo Autovettura copiando i valori dall'oggetto originale in modo tale da avere un altro oggetto con un altro indirizzo di memoria, ma mi sembra una soluzione poco pratica.
Chiedo scusa a tutti se non sono molto bravo ad esprimermi ma come ho detto, ho iniziato a studiare Java solo da un paio di settimane.
Vi faccio un esempio pratico per rendere il tutto più comprensibile.
Ho creato 2 classi:
Automobile: con attributi marca, modello e una variabile booleana disponibilita.
Concessionario: con attributi nome e un ArrayList di tipo Automobile.
Nella classe Concessionario ho creato un metodo che aggiunge un automobile alla lista presente, e un metodo che passando in input un oggetto automobile setta la disponibilita su true.
Java:
public void Disponibilità(Autovettura macchina){
if (auto.contains(macchina)) {
auto.get(auto.indexOf(macchina)).setDisponibilita(true);
}
}
Il problema è che nonostante io stia lavorando nella lista, quindi sto andando a modificare l'indice nella lista dove è presente l'oggetto in questione, la disponibilità viene settata per l'oggetto e non per l'oggetto solo in quella specifica lista , probabilmente in quanto l'oggetto viene passato per riferimento e quindi l'indirizzo di memoria che andiamo a modificare è lo stesso.
Dunque se io voglio creare 2 concessionari e inserire una macchina in entrambi ma settare la disponibilità nel concessionario 1 a true e nel concessionario 2 a false, non è possibile.
Esiste dunque un metodo pratico per modificare l'oggetto della lista solo per l'oggetto interessato?
Ho pensato che una soluzione sarebbe ogni volta che si vuole aggiungere una macchina alla lista di un concessionario, di creare un nuovo oggetto di tipo Autovettura copiando i valori dall'oggetto originale in modo tale da avere un altro oggetto con un altro indirizzo di memoria, ma mi sembra una soluzione poco pratica.
Chiedo scusa a tutti se non sono molto bravo ad esprimermi ma come ho detto, ho iniziato a studiare Java solo da un paio di settimane.