Clone problem.

OE
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 13 lat
0

Mam problem ze skopiowanie, sklonowaniem obiektu. W definicji klasy którą chcę klonować mam

Kopiuj
 public a clone(){
        try{
            return (a)super.clone();
        }
        catch (Exception e){
            return null;
        }
    }

Natomiast samo klonowanie robię tak:
tmpa = (a)k.clone();
W klasie a poziadam listę. dodając do k dodatkowy element listy automatycznie jest też dodany w tmpa. Co źle robie? A może nie osiągnę drugiego niepowiązanego obiektu używając clone()??

iooi
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 11 lat
  • Postów:573
1

Całą listę też musisz skopiować. Domyślna implementacja clone to płytka kopia obiektu, czyli zwykłe przepisanie wszystkich referencji.
W takim wypadku, po zrobieniu super.clone(), musisz sam skopiować tę listę (wszystkie implementacje kolekcji mają "konstruktory kopiujące") i przypisać do obiektu klonowanego.

edytowany 3x, ostatnio: iooi

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.