「java怎么克隆」java怎么克隆对象

博主:adminadmin 2022-12-21 07:03:08 60

本篇文章给大家谈谈java怎么克隆,以及java怎么克隆对象对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何进行Java对象的克隆

以数组对象的克隆为例。

Java程序:

public class Main {

public static void main(String[] args) {

int[] a = {1, 2, 3};

int[] b = a.clone(); //b是a的克隆,a和b指向不同的数组

int[] c = a; //c是a的引用,a和c指向同一个数组

a[0] = 10;

System.out.println("a[0] = " + a[0]);

System.out.println("b[0] = " + b[0]);

System.out.println("c[0] = " + c[0]);

}

}

运行测试:

a[0] = 10

b[0] = 1

c[0] = 10

自定义类的情况如下:

public class Main {

public static void main(String[] args) {

A a1 = new A();

a1.name = "Smith";

A a2 = a1;

A a3 = (A) a1.clone();

a1.name = "White";

System.out.println("a1 : " + a1.name);

System.out.println("a2 : " + a2.name);

System.out.println("a3 : " + a3.name);

}

}

class A implements Cloneable {

public String name = null;

@Override  

    public Object clone() {  

        A a = null;  

        try{  

            a = (A)super.clone();

        }

        catch(CloneNotSupportedException e) {  

            e.printStackTrace();  

        }  

        return a;

    }  

}

运行测试:

a1 : White

a2 : White

a3 : Smith

java如何实现对象的克隆

可以重载clone方法克隆对象

首先、该类要实现Cloneable的接口,不然执行clone方法的时候会抛出CloneNotSupportedException异常

然后、就在该类重载clone方法,自己加上克隆的逻辑,本人小白,手敲的代码

public class Book implement Cloneable{

    private String name;

    

    public Book(String name){

        this.name=name;

    }

    

    @Override

public Book clone() throws CloneNotSupportedException {

return new Book(this.name);

}

}

关于java克隆对象

--在使用clone方法时,对于每一个类,都需要做如下判断:

1--默认的clone方法是否能满足要求

2--默认的clone方法是否能通过调用可变子对象的clone方法修补

3--是否不应该使用clone

----如选择1和2,就必须实现Cloneable接口,使用public重定义clone方法

意思就是,你如果想用clone方法,首先要考虑Object的clone能不能满足你的需求,如果可以,那好,直接调用,反之,你就得必须在需要使用clone方法的类中实现Cloneable接口,自己写一个Clone规则。

java中 clone()方法的使用

final只是不能修改内部值,但是可以修改引用.你a=b.clone();已经把a的引用给修改了!

如何克隆Java对象

Java中的对象涉及使用引用类型,没有直接的方法可将一个对象的内容复制到一个新对象中。将一个引用分配给另一个引用只会给相同对象建立另一个引用。因此,Java对所有引用类型使用一个特殊的clone()方法,为对象复制自身提供一个标准的机制。以下是你需要了解和克隆Java对象有关的细节。为何建立一个本地拷贝?给一个对象建立本地拷贝的原因很可能是由于你计划修改该对象,并且你不想修改方法调用者的对象。如果你确定你需要一个本地拷贝,你可以使用Object类的clone()方法来执行这项操作。clone()方法被定义为受保护方法,但你必须在你希望克隆的所有子类中重新公开定义它。例如,标准库类ArrayList忽略clone(),但你可以这样为ArrayList调用clone()方法:import java.util.*;class MyInt {private int i;public MyInt(int ii) { i = ii; }public void increment() { i++; }public String toString() {return Integer.toString(i);}}public class Test {public static void main(String[] args) {ArrayList al = new ArrayList();for(int i = 0; i 10; i++ )al.add(new MyInt(i));ArrayList al1 = (ArrayList)al.clone();// Increment all al1’s elements:for(Iterator e = al1.iterator(); e.hasNext(); ) ((MyInt)e.next()).increment();}}clone()方法生成一个Object,它必须重新转变为适当的类型。这个例子说明ArrayList的clone()方法如何不能自动克隆ArrayList包含的每一个对象?原有ArrayList和克隆后的ArrayList是相同对象的别名。这种情况通常叫做浅拷贝,因为它仅仅复制一个对象的“表面”部分。实际的对象由这个“表面”,引用指向的所有对象,以及那些对象指向的所有对象等构成。这往往被称作“对象网络”。下一页

java实现clone方法的快捷键

java中仅有的创建对象的两种方式:①.使用new操作符创建对象;②.使用clone方法复制对象。由于clone方法将最终将调用JVM中的原生方法完成复制,所以...

java怎么克隆的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java怎么克隆对象、java怎么克隆的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。