「java对象的克隆」java实现对象克隆的两种方法

博主:adminadmin 2022-12-05 20:21:07 62

今天给各位分享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实现对象克隆的两种方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

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