Tiefes Klonen

polarpro

Mitglied
Hallo,

ich rätsle, wie tiefes Klonen zu bewerkstelligen ist.

Ich habe nun ein Projekt geschrieben, das besteht aus Mitarbeiter und Abteilung. Ein Mitarbeiter-Objekt enthält die Attribute name (Typ String) und meineAbteilung (Typ Abteilung).

Normales Klonen würde nur eine flache Kopie erstellen.

Ich habe versucht, in allen referenzierten Klassen Cloneable zu implementieren. Ich bin der Meinung, es funzt, habe es in der main-Methode ausprobiert. Falls jemand sich den Code mal anschauen mag und mir sagt, ob ich auf dem Holzweg bin, wäre ich dankbar:

Klasse Abteilung:
Java:
public class Abteilung implements Cloneable
{
	private String bezeichnung;
	private int nummer;
	
	public Abteilung(String bezeichnung, int nummer)
	{
		this.bezeichnung=bezeichnung;
		this.nummer=nummer;
	}

	public String getBezeichnung() {
		return bezeichnung;
	}

	public int getNummer() {
		return nummer;
	}
	
	//TIEFES KLONEN
	@Override
	public Abteilung clone() throws CloneNotSupportedException
	{
		return (Abteilung)super.clone();
	}
}
Klasse Mitarbeiter:
Java:
public class Mitarbeiter implements Cloneable
{
	private String name;
	private Abteilung meineAbteilung;
	
	public Mitarbeiter(String name, Abteilung meineAbteilung)
	{
		this.name=name;
		this.meineAbteilung=meineAbteilung;
	}

	public String getName() {
		return name;
	}

	public Abteilung getMeineAbteilung() {
		return meineAbteilung;
	}
	
	@Override
	public Mitarbeiter clone() throws CloneNotSupportedException
	{	
		///TIEF:
		Mitarbeiter geklont = (Mitarbeiter)super.clone();
		geklont.meineAbteilung = (Abteilung)meineAbteilung.clone();
		return geklont;
	}
}
UI-Klasse mit der main-Methode:
Java:
public class MitarbeiterUI
{
	public static void main(String[] args)
	{
		Abteilung aAbteilung = new Abteilung("Buchhaltung", 1);
		
		Mitarbeiter aMitarbeiter = new Mitarbeiter("Herbert Hase", aAbteilung);
		Mitarbeiter klonMitarbeiter = null;
		
		try
		{
			klonMitarbeiter = aMitarbeiter.clone();
		}
		catch(CloneNotSupportedException e)
		{
			System.out.println("Fehler: " + e);
		}
		
		System.out.println(aAbteilung);
		System.out.println(aMitarbeiter);
		System.out.println("aMitarbeiter: " + aMitarbeiter.getName() + " / " + aMitarbeiter.getMeineAbteilung());
		System.out.println(klonMitarbeiter);
		System.out.println("klonMitarbeiter: " + klonMitarbeiter.getName() + " / " + klonMitarbeiter.getMeineAbteilung());
	}
}
 

Ähnliche Java Themen

Neue Themen


Oben