Shallow Copy von Objekten

Status
Nicht offen für weitere Antworten.

Han

Bekanntes Mitglied
Hallo....ich frage mich warum mir Java bei dieser Shallow Copy eine CloneNotSupportedException Rauswirft....aber seht selbst:

Code:
public class Figure implements Cloneable{

	int x,y;
	String name;
	
	public Figure(int x, int y, String name){
		this.x = x;
		this.y = y;
		this.name = name;
	}
	
	public Object clone() throws CloneNotSupportedException{
		return super.clone();
	}
	
}

public class Circle extends Figure{

	Color color;
	
	public Circle(int x, int y, String name, Color color){
		super(x,y,name);
		this.color = color;
	}
}

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Figure a = new Circle(10,20,"Hannes",Color.red);
		Figure b = (Circle)a.clone(); //CloneNotSupported Exception
	}

}


mfg,
Han
 

Reeny

Aktives Mitglied
In der Dokumentation von java.lang.Object findest du folgendes:

The class Object does not itself implement the interface Cloneable, so calling the clone method on an object whose class is Object will result in throwing an exception at run time.

Das heißt, dass du bei dir nicht die Methode
Code:
super.clone()
anwenden kannst, da Object diese nicht definiert hat. Da musst du schon selbst etwas programmieren.
 

byte

Top Contributor
Nein, das ist eine Fehlinterpretation. Man kann durchaus super.clone() aufrufen, aber halt nur in Klassen, die Clonable implementieren. Object implementiert dieses Interface bloß nicht. Die Methode ist aber vorhanden, implementiert und kann verwendet werden.

@Threadersteller: Also Dein Code funktioniert einwandfrei. Die CloneNotSupportedException wird nicht geworfen, sie muss aber explizit mit try/catch behandelt werden. Daher gibt es einen Fehler. Fang die Exception ab und es läuft.
 

Han

Bekanntes Mitglied
Nein, es geht doch. Ich hab mir nur die Fehlermeldung nicht genau durchgelesen....hätte mich auch gewundert denn das hab ich bis jetzt immer so gemacht und es funktionierte....aber warum eigentlich wenn ich mir den Kommentar von Reeny so anschaue....weiß ich auch nicht wirklich eine Antwort...


Code:
Figure a = new Circle(10,20,"Hannes",Color.red);
		try{
			Figure b = (Figure)a.clone();
		}catch(CloneNotSupportedException e){
			
		}

mfg,
Hannes
 

byte

Top Contributor
Wie gesagt, ein Blick in Cloneable hilft. Dann sieht man nämlich, dass die clone() Methode dort gar nicht definiert ist. Das ist bloß ein Marker-Interface. Sobald die clone() aufgerufen wird und das Interface nicht implementiert ist, gibts die Exception. Object ist quasi eine Ausnahme. Es ist auch möglich, von einer Superklasse die super.clone() (von Object) aufzurufen, obwohl Object nicht Cloneable implementiert. Das geht aber halt nur, wenn die Superklasse das Interface implementiert.

Was Reeny sagte, ist falsch.
 

Han

Bekanntes Mitglied
Vielleicht hats damit zu tun das die clone Methode in Object so definiert ist:

Code:
 protected native Object clone() throws CloneNotSupportedException;

mfg,
Hannes
 

Reeny

Aktives Mitglied
Jaja, ich muss zugeben: mein Fehler ...

Hätte die API etwas genauer durchlesen müssen. Schande auf mein Haupt! ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Shallow Copy / Deep Copy von Objekten Java Basics - Anfänger-Themen 4
A Shallow copy .super.clone() Java Basics - Anfänger-Themen 2
B Frage zu Shallow vs. DeepClone Java Basics - Anfänger-Themen 14
S Copy - Constructor vs clone() Java Basics - Anfänger-Themen 20
J Count und Copy in Stream<Path> Java Basics - Anfänger-Themen 11
B Copy Paste Befehl Java Basics - Anfänger-Themen 6
S Objekte klonen und Deep Copy Java Basics - Anfänger-Themen 30
B Files.copy wirft Exeption Java Basics - Anfänger-Themen 2
V java nio Files.copy Java Basics - Anfänger-Themen 10
B Copy-Constructor Java Basics - Anfänger-Themen 6
Luk10 Arrays.copy(myArray) vs myArray.clone() Java Basics - Anfänger-Themen 9
B Eclipse Hotkeys (Copy Paste Undo Redo Save) spielen verrückt Java Basics - Anfänger-Themen 6
L Array Copy Java Basics - Anfänger-Themen 7
M Cut, Copy und Paste in Symbolleiste einfügen Java Basics - Anfänger-Themen 4
A Objekt zwischen 2 Java programmen copy+Paste Java Basics - Anfänger-Themen 13
J Funktion Copy Area Java Basics - Anfänger-Themen 13
K Ich möchte in einem Text Editor cut, copy ,paste einfügen! Java Basics - Anfänger-Themen 2
C copy Java Basics - Anfänger-Themen 6
K Ant Copy Folder mit Zugriffschutz ausschliessen. Java Basics - Anfänger-Themen 2
M Cut, Copy und Paste mit mehreren Textfeldern? Java Basics - Anfänger-Themen 3
F Copy - zugriff verweigert ! Java Basics - Anfänger-Themen 5
W deep copy mehrdimensionaler Arrays Java Basics - Anfänger-Themen 11
H Deep Copy von Objekten Java Basics - Anfänger-Themen 4
V Copy & "Paste" im Frame Java Basics - Anfänger-Themen 3
G Über undo, copy, cat, paste, delete Funktionen Java Basics - Anfänger-Themen 3
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
T Kollision von 2 Objekten Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
YAZZ Schlüsselworte Töten von Objekten Gameover Java Basics - Anfänger-Themen 2
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
A Klasse Menge mit Objekten der Klasse Person Java Basics - Anfänger-Themen 8
S Auf Array aus Objekten zugreifen? Java Basics - Anfänger-Themen 1
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
B ID von unterschiedlichen Objekten bekommen? Java Basics - Anfänger-Themen 2
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
S werte von objekten in schleife verändern Java Basics - Anfänger-Themen 14
D Zusammenarbeit von Objekten Java Basics - Anfänger-Themen 1
Y Begrenzte Anzahl an Objekten? Java Basics - Anfänger-Themen 12
Kornblume Nulltyp eines Arrays von Objekten? Java Basics - Anfänger-Themen 10
A Frage zur Aufgabe Uhrzeit einstellen mit Objekten Java Basics - Anfänger-Themen 18
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
R Methoden Methode ruft Methode auf, ruft Methode auf (mit Objekten) Java Basics - Anfänger-Themen 4
S Serialisierung: Laden von Objekten - Risiken? Java Basics - Anfänger-Themen 4
Shizmo PriorityQueue mit Objekten Java Basics - Anfänger-Themen 10
E Instanzieren von Objekten verkürzen Java Basics - Anfänger-Themen 1
F Interaktion von Objekten verschiedener Klassen... Java Basics - Anfänger-Themen 13
D Effiziente Verwaltung der Objekten und Unterobjekten Java Basics - Anfänger-Themen 18
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
L Subklasse von ArrayList nur mit bestimmten Objekten füllen Java Basics - Anfänger-Themen 1
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
S Problem mit augabe von Objekten Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
W Was passiert mit Objekten die nicht in Objektvariablen initialisiert werden ? Java Basics - Anfänger-Themen 3
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
K Min eines Arrays mit Objekten Java Basics - Anfänger-Themen 6
M Array mit Objekten lässt sich nicht auslesen Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
J Methoden Einfügen von Objekten nach Alphabet in ArrayList funktioniert nicht Java Basics - Anfänger-Themen 2
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
TheSorm Koordinaten von gedrehten Objekten Java Basics - Anfänger-Themen 4
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
B Aliasing bei null-Objekten Java Basics - Anfänger-Themen 3
O Java Erzeugung von neuen Objekten Java Basics - Anfänger-Themen 1
J Verständnisfragen zu dem Thema Objekten Java Basics - Anfänger-Themen 7
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
O Größe von Objekten Java Basics - Anfänger-Themen 5
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F Umgang mit referenzierten Objekten bei ArrayList Java Basics - Anfänger-Themen 1
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
C For schleife mit Array und Objekten Java Basics - Anfänger-Themen 17
kaoZ Input/Output Android : Deserialisieren von mehreren Objekten in einer Datei Java Basics - Anfänger-Themen 0
U Übergabe von Objekten Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben