Heim > Java > JavaErste Schritte > Tiefe Kopie und flache Kopie der Java-Objektkopie

Tiefe Kopie und flache Kopie der Java-Objektkopie

王林
Freigeben: 2019-11-25 15:28:28
nach vorne
2585 Leute haben es durchsucht

Tiefe Kopie und flache Kopie der Java-Objektkopie

1. Um eine Objektkopie zu implementieren, muss eine klonbare Schnittstelle implementiert werden. Wenn diese Schnittstelle nicht implementiert ist, wird eine CloneNotSupportedException generiert. Tatsächlich verfügt diese Schnittstelle nicht über eine einzige Methode, daher wird diese Art von Schnittstelle häufig als Markerschnittstelle bezeichnet.

2. Es gibt eine clone()-Methode in Object, die eine flache Kopie implementiert. Bei Mitgliedsvariablen grundlegender Datentypen wird der Wert durch flaches Kopieren direkt übertragen, dh der Attributwert wird in das neue Objekt kopiert, sodass grundlegende Datentypen direkt flach kopiert werden können.

Für variable Datentypen wie Date-Objekte müssen tiefe Kopien implementiert werden. Natürlich implementiert die Date-Klasse selbst die clone()-Methode, aber die String-Klasse implementiert beispielsweise nicht die clone( )-Methode, da String-Objekte die Zeichenfolge in ihrem Lebenszyklus nicht ändern können, um die Zeichenfolge im Speicher zu ändern. Es gibt kein Problem, wenn ähnliche Attribute in verschiedenen Objekten auf denselben String verweisen.

Java-Lernvideo-Tutorial: Java-Lernvideo

Das Beispiel sieht wie folgt aus:

public class Main{
	public static void main(String[] args){
	}
}
class Employee implements Cloneable{
	private int id;
	private Date date;
	public Employee(){}
	public Employee(int id){
		this.id=id;
		this.date=new Date();
	}
	@Override
	public Employee clone() throws CloneNotSupportedException{
		Object t=super.clone();//此时的object中的拷贝只是浅拷贝
		Employee clone=(Employee)t;
		clone.date=this.data.clone();//date类实现了深拷贝,直接调用即可
		return clone;
	}
}
class Mannager extends Employee{
	private String name;
	public Mannager(){
		super();
	}
	public Mannager(String name,int id){
		super(id);
		this.name=name;
	}
	@Override
	public Mannager clone(){
		Employee t=super.clone();//先把id date属性复制
		Mannager clone=(Mannager)t;
		clone.name=t.name;//String 对象直接赋值引用
		return clone;
	}
}
Nach dem Login kopieren

Empfohlene weitere Java-bezogene Artikel: Java-Einführung Tutorial

Das obige ist der detaillierte Inhalt vonTiefe Kopie und flache Kopie der Java-Objektkopie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage