JAVA clone的简单理解

原创 2016年06月01日 10:10:00

在编程的时候会碰到一个很无解的问题:比如现在有两个对象,一个对象改了某个属性后,有可能另一个对象也跟着变了。

如以下代码:
A.java:

private String name = "";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

Main.java:

A a1 = new A();
        A a2 = new A();
        a1.setName("1");
        a2 = a1;
        a2.setName("2");
        System.out.println("a1==" + a1.getName());
        System.out.println("a2==" + a2.getName());

输出的结果:

a1=2;
a2=2;

传引用的时候是把自己的地址给前一个对象,改数据的话自然都会变


通过clone就可以解决这个问题:

A.java:

public class A implements Cloneable {

    public A() {
    }

    private String name = "";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        // TODO Auto-generated method stub
        A a = null;
        a = (A) super.clone();
        return a;
    }

}

Main.java:

public static void main(String[] args) throws CloneNotSupportedException {
        // TODO Auto-generated method stub
        A a1 = new A();
        A a2 = new A();
        a1.setName("1");
        a2 = (A) a1.clone();
        a2.setName("2");
        System.out.println("a1==" + a1.getName());
        System.out.println("a2==" + a2.getName());
    }

输出的结果:

a1=1;
a2=2;

clone应该是给前一个对象开辟了一个新的地址

版权声明:本文为博主原创文章,未经博主允许不得转载。

第十一条:简单理解clone

package cn.stu; public class Student implements Cloneable{ public String name; public String...

深入理解java的clone

预备知识 为什么要clone Object的clone以及为什么如此实现 如何clone 对clone的态度 其他的选择 和Serializable的比较 性能 预备知识 为...

深入理解java中的clone

目录  预备知识  为什么要clone  Object的clone以及为什么如此实现  如何clone  对clone的态度  其他的选择  和Serializable的比较  性...

对于java中clone()函数的理解

下面是引用JavaAPI文档部分 引用 protected Object clone()                  throws CloneNotSupportedExcepti...

深入理解java中的clone

预备知识  为什么要clone  Object的clone以及为什么如此实现  如何clone  对clone的态度  其他的选择  和Serializable的比较  性能  预...

java面试基础-Java中对Clone的理解

面试中经常遇到Clone的相关知识,今天总算是把Clone理解的比较透彻了!Java中Clone的概念大家应该都很熟悉了,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Cl...

Java clone方法使用

  • 2015年06月08日 20:52
  • 186KB
  • 下载

java Clone

  • 2008年07月25日 14:35
  • 71KB
  • 下载

JS学习30:对象简单、深度克隆(复制、Clone)

转自:http://qianduanblog.com/post/js-learning-30-object-clone-copy.html javascript的一切实例都是对象,只是对象之...

Java中的克隆(Clone)机制

  • 2007年07月16日 09:55
  • 49KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA clone的简单理解
举报原因:
原因补充:

(最多只允许输入30个字)