「java怎么克隆」java怎么克隆对象
本篇文章给大家谈谈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怎么克隆的信息别忘了在本站进行查找喔。
发布于:2022-12-21,除非注明,否则均为
原创文章,转载请注明出处。