实现JAVA深拷贝,有两种方法。
方法一,传统重载clone()方法,但当类中有很多引用时,比较麻烦。
方法二,采用序列化方法,重载clone()方法,实现简单。
如下,是方法二实现代码:
public Object clone()
{
Object object=null;
try
{
ByteArrayOutputStream ot = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(ot);
oo.writeObject(this);
ByteArrayInputStream it = new ByteArrayInputStream(ot.toByteArray());
ObjectInputStream oi = new ObjectInputStream(it);
object = oi.readObject();
}catch(Exception e)
{
e.printStackTrace();
}
return object;
}
分享到:
相关推荐
Java串行化是Java编程语言中的一个重要概念,用于将对象的状态转换为字节流,以便存储在磁盘上或在网络中传输。这个过程被称为对象的序列化,而将字节流恢复为对象的过程称为反序列化。在Java中,实现串行化的主要...
Java虚拟机提供了多种垃圾收集器,如串行、并行、并发等,针对不同应用场景选择合适的收集器组合,以达到性能与内存使用的平衡。垃圾收集策略包括分代收集、复制算法、标记-清除算法、标记-整理算法等。 四、直接...
* HashMap的Put方法深拷贝和浅拷贝 * CopyOnWriteArrayList的底层原理 三、Java多线程编程 * 什么是线程安全? * 什么是守护线程? * ThreadLocal的底层原理 * 并发、并行、串行之间的区别 * Java死锁如何避免? *...
在.NET中,可以使用`Object`类的`MemberwiseClone()`方法来实现对象的浅拷贝,或者通过序列化和反序列化来实现深拷贝。在Java中,浅拷贝只是复制对象的引用,而深拷贝则会递归复制对象的所有属性,包括嵌套的对象。 ...
15. **集合的复制**:clone()、Arrays.copyOf()、List的subList()以及深拷贝和浅拷贝的概念。 16. **Collection的流式编程**:Java 8引入的Stream API可以将集合转换为流,支持并行和串行操作,提供函数式编程风格...
32. **深拷贝与浅拷贝**:深拷贝创建完全独立的对象副本,包括引用的对象;浅拷贝只复制对象本身,不复制引用的对象。 33. **System.gc() 和 Runtime.gc()**:建议开发中避免使用,它们是请求垃圾回收的手段,实际...
- **赋值运算符重载**:用于实现深拷贝,避免资源竞争。 ### 空指针调用函数 - **风险**:会导致未定义行为,例如程序崩溃。 - **预防措施**:在调用前检查指针是否为空。 ### Hadoop #### MapReduce - **原理*...
1. 对象创建与内存分配:包括浅拷贝、深拷贝、对象池等概念,以及如何优化对象创建过程。 2. 内存管理与垃圾收集(GC):讲解不同类型的垃圾收集器,如串行GC、并行GC、CMS和G1,以及内存泄漏检测和预防。 3. 类...
2. 传输快:Netty实现了零拷贝技术,减少了内存拷贝,从而提升了数据传输效率。 3. 封装好:Netty对NIO进行了深度封装,提供了一套简洁易用的API,降低了开发难度。 4. 功能强大:Netty内置了多种编解码器,支持多种...
实现这些协议的类可以创建对象的浅拷贝或深拷贝。 10. **异常处理(Exception Handling)**: Objective-C支持异常处理,通过`@try`、`@catch`、`@throw`等关键字来捕获和处理运行时错误。 在`test110-master`这...