「java对象的克隆」java实现对象克隆的两种方法
今天给各位分享java对象的克隆的知识,其中也会对java实现对象克隆的两种方法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java中克隆一个对象对象的属性改变另一个改变吗
不改变。java中克隆一个对象对象的属性改变另一个不改变。属于值传递,改变一个对象的值,另一个不会受影响。
java中的浅克隆和深克隆是什么
克隆是指克隆对象,在堆空间复制一块内存,是完全的两个对象,不是指针指向!浅克隆是指克隆一个对象,而该对象的属性只是基本数据类型,只克隆出该对象!深度克隆是指克隆的目标里面还有引用类型,引用类型里还有引用类型,同时把引用类型克隆出来叫深度克隆!常用的方法有两种,第一,需克隆的对象实现cloneable接口;第二,使用commons包提供的克隆方法。这两种方法都能实现深度克隆!
java如何实现对象克隆
万给你写个万能的深Clone方法吧。
public static T T cloneObject(T input) throws IOException {
ByteArrayOutputStream baos = null;
ObjectOutputStream oos = null;
ByteArrayInputStream bis = null;
ObjectInputStream ois = null;
Object result;
try {
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(input);
oos.flush();
byte[] bytes = baos.toByteArray();
bis = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bis);
result = ois.readObject();
} catch (IOException e) {
throw new IllegalArgumentException("Object can't be copied", e);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException(
"Unable to reconstruct serialized object due to invalid class definition", e);
} finally {
oos.close();
baos.close();
bis.close();
ois.close();
}
return (T) result;
}
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对象的克隆和java实现对象克隆的两种方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-05,除非注明,否则均为
原创文章,转载请注明出处。