deepcopy mit clone()

Anon7331

Neues Mitglied
hi,
versuche eine deep copy zu erzeugen, aber bekomm es einfach nicht hin :/

Java:
@Override
   public ChessBoard clone() {
       ChessBoard copy = null; 
       try {
       copy = (ChessBoard) super.clone();
      
       } catch (CloneNotSupportedException e) {
           throw new InternalError();
       }
       copy.board = board.clone();
       for(int i = 0; i < board.length; ++i) {
           copy.board[i] = board[i].clone();
           for(int j = 0; j < board[i].length; ++j) {
               copy.board[i][j] = (String) board[i][j].clone();
           }
       }
       return copy;
   }

copy.board[j] = (String) board[j].clone();
in dieser Zeile hab ich bei .clone() den Error drin.
"The method clone() from the type Object is not visible"
cloneable hab ich via interface in der Klasse implementiert..
board ist übrigens ein String[][].
Jemand ne Idee wie ich das fixen kann? Hab schon ewig gegooglt und immer nur das gleiche mit protected usw gefunden, aber ich habs ja überschrieben? :/

Danke schonmal :)
 

Anon7331

Neues Mitglied
hab den Fehler gefunden bzw einfach in der einen Zeile das .clone() weggelassen und es geht trotzdem.
Würde das Thema ja löschen, aber keine Ahnung wie und ob das geht ^^
 

Wurstkopp

Bekanntes Mitglied
Zur Erklärung: Die Klasse String hat keine clone Methode da Strings unveränderbar (eng. immutable) sind. Somit kann eine 2. Referenz auf einen String auch nicht den String der 1. Referenz verändern, da alle Methoden im JDK so gebaut sind, dass diese bei Veränderung einen neuen String erzeugen und zurückgeben.

"String a = String b" ist deshalb tatsächlich der korrekte Weg um einen String zu "kopieren".
 

Ähnliche Java Themen

Neue Themen


Oben