Java 208 道面试题:第五模块答案 对象拷贝

Java面试中关于对象拷贝的常见问题,包括克隆的原因、实现方式以及深拷贝和浅拷贝的区别。克隆用于保留原有数据的同时进行操作,实现方式有实现Cloneable接口或使用序列化。深拷贝与浅拷贝的主要区别在于是否复制对象的引用,深拷贝确保修改一个对象不会影响另一个。
摘要由CSDN通过智能技术生成

61. 为什么要使用克隆?

 

想对一个对象进行处理,又想保留原有的数据进行接下来的操作,就需要克隆了,Java语言中克隆针对的是类的实例。

 

62. 如何实现对象克隆?

 

有两种方式:

 

1). 实现Cloneable接口并重写Object类中的clone()方法;

  

2). 实现Serializable接口,通过对象的序列化和反序列化实现克隆,可以实现真正的深度克隆,代码如下:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class MyUtil {

    private MyUtil() {
        throw new AssertionError();
    }

    @SuppressWarnings("unchecked")
    public static <T extends Serializable> T clone(T obj) 
                                  throws Exception {
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值