近期在javaeye看到一位兄弟写的java原型模式之理解。然后,自己就写了个demo,但是在使用colone时,好像出现了些问题??
定义如下几个类:
public class BtripApplication implements Cloneable{
private int a;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public BtripApplication clone() throws CloneNotSupportedException {
return (BtripApplication)super.clone();
}
}
------------------------------------------------------------------------------------------------------------------------
public class BtripRevision implements Cloneable {
private BtripApplication btripApplication;
public BtripRevision(BtripApplication btripApplication){
this.btripApplication = btripApplication;
}
public BtripApplication getBtripApplication() {
return btripApplication;
}
public void setBtripApplication(BtripApplication btripApplication) {
this.btripApplication = btripApplication;
}
public BtripRevision clone() throws CloneNotSupportedException {
return (BtripRevision)super.clone();
}
}
---------------------------------------------------------------------------------------------------------------------
public class TestBtripApplicationRevision {
public static void main(String args[]) throws CloneNotSupportedException{
BtripApplication b1 = new BtripApplication();
b1.setA(1);
BtripRevision b2 = new BtripRevision(b1);
BtripRevision b3 = b2.clone();
//b3.getBtripApplication().setA(3);
b1.setA(3);
System.out.println("b2="+b2.getBtripApplication().getA());
System.out.println("b3="+b3.getBtripApplication().getA());
System.out.println("b2="+b2+"--------b3="+b3);
}
}
输出的结果为:b2=3
b3=3
为什么结果不是b2=1,b3=3呢???
分享到:
相关推荐
clone顾名思义是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建...
java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...
原型模式实践代码
Java中的clone方法详解_动力节点Java学院,动力节点口口相传的Java黄埔军校
47丨原型模式:如何最快速地clone一个HashMap散列表?1
10道Java面试题及详细解答 1.Java中多态的实现方式是什么? 2. Java中如何避免空指针异常? 3. Java中垃圾回收的机制是什么?...8. Java中如何防止对象的clone? 9. Java中什么是泛型? 10. Java中如何实现单例模式?
13.3.2 原型模式的使用场景 13.4 原型模式的注意事项 13.4.1 构造函数不会被执行 13.4.2 浅拷贝和深拷贝 13.4.3 clone与final两个冤家 13.5 最佳实践 第14章 中介者模式 14.1 进销存管理是这个样子的吗? 14.2 中介...
java中clone的详细用法,分浅拷贝和深拷贝,并分别有详细的实例介绍。从原理分析。
Java深浅clone测试代码 流拷贝 Cloneable
详细的描述了Java中 clone方法使用
用 Java 语言编写的 初学者可学习的clone()
对java clone的一些讲解,以及我个人的一些心得等等,
即原型模式,提供一个已经存在的对象进行新对象创建的接口,一般情况下都是使用Clone接口。 此模式非常简单,简单的说就是复制多个当前对象供使用。Prototype模式允许一个对象再创建另外一个可定制的对象,根本...
现在Clone已经不是一个新鲜词语了,伴随着“多莉”的产生这个词语确实很“火”过一阵子,在java中也有这么一个概念,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的...
java中clone的详细用法,分浅拷贝和深拷贝,并分别有详细的实例介绍。从原理分析。
java code clone
clone的用法 希望有帮助,仅供参考 通过例子的分析,可以对克隆的方法有所深入了解
1、定义 原型模式(Prototype)是通过复制一个已经存在的实例来返回新的实例,而不是新建实例,被复制的实例是我们所称的... (1)利用Java中的clone方法深拷贝与浅拷贝 浅拷贝: public class Professor { pri