Hallo,
ich habe grade ein paar nette Stunden mit Fehlersuche zugebracht, die mich gelehrt haben auf die feinen Unterschiede zwischen tiefer und flacher Kopie zu achten.
Ich habe nämlich mein geklontes Objekt munter verändert und bei späteren Zugriffen auf mein Ursprungsobjekt, das eigentlich hätte unverändert bleiben sollen, mich sehr gewundert, was mit dem passiert war.
Ok, das kopierte Objekt enthält als Attribute Referenztypen und die muss ich wohl bei meinem Klon extra mit kopieren, soviel habe ich gelenrt. Unter anderem ist da auch ein mehrdimensionaler Array mit dabei und in Java ist eine Insel hab ich nun gelesen, dass da bei einer Kopie nur mein erster Index tiefkopiert wird und mein zweiter nicht. So'n Scheiß!! :cry:
Wie bekom ich das denn hin.
Ok, ich könnte per Hand einen einen neuen Array anlegen und dort über zwei for Schleifen alles reinkopieren, aber da ich sehr viele kopien anlegen muss, befürchte ich dass das viel zu lange dauert.
Wenn jemand eine Idee hat, wärs schön.
Hier nun meine Klasse mit den Attributen.
ich habe grade ein paar nette Stunden mit Fehlersuche zugebracht, die mich gelehrt haben auf die feinen Unterschiede zwischen tiefer und flacher Kopie zu achten.
Ich habe nämlich mein geklontes Objekt munter verändert und bei späteren Zugriffen auf mein Ursprungsobjekt, das eigentlich hätte unverändert bleiben sollen, mich sehr gewundert, was mit dem passiert war.
Ok, das kopierte Objekt enthält als Attribute Referenztypen und die muss ich wohl bei meinem Klon extra mit kopieren, soviel habe ich gelenrt. Unter anderem ist da auch ein mehrdimensionaler Array mit dabei und in Java ist eine Insel hab ich nun gelesen, dass da bei einer Kopie nur mein erster Index tiefkopiert wird und mein zweiter nicht. So'n Scheiß!! :cry:
Wie bekom ich das denn hin.
Ok, ich könnte per Hand einen einen neuen Array anlegen und dort über zwei for Schleifen alles reinkopieren, aber da ich sehr viele kopien anlegen muss, befürchte ich dass das viel zu lange dauert.
Wenn jemand eine Idee hat, wärs schön.
Hier nun meine Klasse mit den Attributen.
Code:
public class ZugBewertung implements Cloneable {//Hilfsklasse zur Übergabe der Variablen an den Min-Max-Zugbewerter
public int gesamtWeissKugeln;
public int [][] fbeleg;
public double [] [] fwert;
public double wZahl;
public int feldwertWZug;