广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州分享Java Object.Clone方法实例_北大青鸟IT计算机学校

作者:邓华发布时间:2021-03-31分类:Java技术浏览:1021


导读:上一篇文章惠州北大青鸟老师给大家分享了Java Object.Clone方法是什么,下面给大家分享Java Object.Clone方法实例,希望能帮助大家更好的理解Java Object.Clone方法。

上一篇文章惠州北大青鸟老师给大家分享了Java Object.Clone方法是什么,下面给大家分享Java Object.Clone方法实例,希望能帮助大家更好的理解Java Object.Clone方法。

实例一

ShallowClone类的clone()方法中的代码与MyClass类的clone()方法相同。

当ShallowClone类使用super.clone()调用Object类的clone()方法时,它会接收自身的浅拷贝。也就是说,它与其克隆共享其实例变量中使用的DoubleHolder对象。

在深层克隆中,您需要克隆对象的所有引用实例变量引用的所有对象。

class MyClass implements Cloneable {  private double value;  public MyClass(double value) {
   this.value = value;
 }  public void setValue(double value) {
   this.value = value;
 }  public double getValue() {    return this.value;
 }  public Object clone() {
   MyClass copy = null;    try {
     copy = (MyClass) super.clone();
   } catch (CloneNotSupportedException e) {
     e.printStackTrace();
   }    return copy;
 }
}class DeepClone implements Cloneable {  private MyClass holder = new MyClass(0.0);  public DeepClone(double value) {
   this.holder.setValue(value);
 }  public void setValue(double value) {
   this.holder.setValue(value);
 }  public double getValue() {    return this.holder.getValue();
 }  public Object clone() {
   DeepClone copy = null;    try {
     copy = (DeepClone) super.clone();
     copy.holder = (MyClass) this.holder.clone();
   } catch (CloneNotSupportedException e) {
     e.printStackTrace();
   }    return copy;
 }
}public class Main {  public static void main(String[] args) {
   DeepClone sc = new DeepClone(100.00);
   DeepClone scClone = (DeepClone) sc.clone();

   System.out.println("Original:" + sc.getValue());
   System.out.println("Clone :" + scClone.getValue());

   sc.setValue(200.00);

   System.out.println("Original:" + sc.getValue());
   System.out.println("Clone :" + scClone.getValue());
 }
}

上面的代码生成以下结果

Original:100.0

Clone:100.0

Original:200.0

Clone:100.0

实例二

以下代码不从clone方法返回对象类型,该方法仅在Java 5或更高版本中编译。

class MyClass  implements Cloneable  {    public MyClass clone()  { 
      Object copy  = null;
      return  (MyClass)copy;
   }
}

下面的代码展示了如何做浅层克隆。

class MyClass implements Cloneable {  private double value;  public MyClass(double value) {
   this.value = value;
 }  public void setValue(double value) {
   this.value = value;
 }  public double getValue() {    return this.value;
 }  public Object clone() {
   MyClass copy = null;    try {
     copy = (MyClass) super.clone();
   } catch (CloneNotSupportedException e) {
     e.printStackTrace();
   }    return copy;
 }
}class ShallowClone implements Cloneable {  private MyClass holder = new MyClass(0.0);  public ShallowClone(double value) {
   this.holder.setValue(value);
 }  public void setValue(double value) {
   this.holder.setValue(value);
 }  public double getValue() {    return this.holder.getValue();
 }  public Object clone() {
   ShallowClone copy = null;    try {
     copy = (ShallowClone) super.clone();
   } catch (CloneNotSupportedException e) {
     e.printStackTrace();
   }    return copy;
 }
}public class Main {  public static void main(String[] args) {
   ShallowClone sc = new ShallowClone(100.00);
   ShallowClone scClone = (ShallowClone) sc.clone();

   System.out.println("Original:" + sc.getValue());
   System.out.println("Clone :" + scClone.getValue());

   sc.setValue(200.00);

   System.out.println("Original:" + sc.getValue());
   System.out.println("Clone :" + scClone.getValue());
 }
}

上面的代码生成以下结果。

Original:100.0

Clone:100.0

Original:200.0

Clone:200.0

更多Java资讯关注网站动态,或者来惠州北大青鸟新方舟校区了解一下。

Java9.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表