采纳的答案
Java代码
1.import java.io.ByteArrayInputStream;
2.import java.io.ByteArrayOutputStream;
3.import java.io.ObjectInputStream;
4.import java.io.ObjectOutputStream;
5.
6./**
7. * 深/浅克隆
8. *
9. * @author JohnGao
10. */
11.public class CloneTest
12.{
13. /**
14. * 模拟对象深/浅克隆效果
15. *
16. * @author JohnGao
17. *
18. * @param T: 目标克隆对象
19. *
20. * @throws Exception
21. *
22. * @return T: 克隆对象
23. */
24. public static <T> T clone(T t) throws Exception
25. {
26. /* 实例化字节数组节点流 */
27. ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
28. ObjectOutputStream objectOutputStream = new ObjectOutputStream(
29. byteArrayOutputStream);
30.
31. /* 将目标克隆对象转换成数组 */
32. objectOutputStream.writeObject(t);
33.
34. /* 返回克隆对象 */
35. return (T) new ObjectInputStream(new ByteArrayInputStream(
36. byteArrayOutputStream.toByteArray())).readObject();
37. }
38.}
Java代码
1.public int age;
2. public StringBuffer str = new StringBuffer();
3.
4. @Test
5. public void test() throws Exception
6. {
7. MyTest myTest1 = new MyTest();
8. MyTest myTest2 = CloneTest.clone(myTest1);
9. System.out.println("myTest1.hashcode: " + System.identityHashCode(myTest1));
10. System.out.println("myTest2.hashcode: " + System.identityHashCode(myTest2));
11. myTest2.age = 15;
12. System.out.println("myTest1.age: " + myTest1.age);
13. System.out.println("myTest2.age: " + myTest2.age);
14. myTest1.str.append("++++");
15. myTest2.str.append("----");
16. System.out.println("myTest1.str: " + myTest1.str);
17. System.out.println("myTest2.str: " + myTest2.str);
18. }
分享到:
相关推荐
在C++中,我们可以利用对象的深拷贝或浅拷贝来模拟实时克隆。深拷贝会复制对象的所有成员,包括动态分配的内存,确保两个对象互不干扰。浅拷贝则只复制对象的引用,可能导致两个对象共享同一块内存,这在需要独立...
这可以通过浅拷贝(只复制引用)或深拷贝(复制所有层级的数据)来实现。 6. **Custom Events**:JavaScript允许开发者自定义事件,这可以模拟“信号克隆”的行为。通过创建一个新的事件类型并手动触发,可以在不...
还有对象属性遍历、this关键字的用法、错误处理、对象克隆(浅拷贝和深拷贝)等深入话题。 总的来说,这份学习笔记全面覆盖了前端开发的基础,从JavaScript语言特性到实际应用场景,再到Node.js和前端框架的介绍,...
在JavaScript中,克隆可以是浅复制(shallow copy),即只复制对象的表面属性,而深层引用(如对象内部的其他对象)不会被复制。深复制(deep copy)则会递归复制所有嵌套的对象和数组。这个项目可能使用了JSON....
2. **深拷贝与浅拷贝**:在进行对象复制时,可能会遇到深拷贝和浅拷贝的概念。深拷贝会创建一个新的对象,包含原始对象的所有属性的新实例,包括嵌套的对象。浅拷贝则只会复制对象的引用,而不是对象本身。CloneTest...
在传统的Lua中,对象的复制通常是浅复制,这意味着新创建的对象只会在表层上有所不同,而底层数据结构依然共享。这在处理大量独立个体时可能会导致意外的行为,因为它们之间的状态可能会相互影响。picobricks通过...
- **克隆数组**:了解如何创建数组的深拷贝或浅拷贝,避免数据意外共享导致的错误。 - **扩展Array类**:学习如何通过继承`Array`类来添加自定义功能,增强数组的灵活性和功能性。 - **数组示例:播放列表**:通过...
不过需要注意的是,`clone()` 方法默认只是浅复制,对于复杂的数据结构,可能需要重写 `clone()` 方法实现深复制。 **包装类** 是Java为每个基本数据类型提供的对应的类,例如 `Integer` 对应 `int`,`Double` 对应...
实例110 Java对象的浅克隆 135 实例111 Java对象的深克隆 137 实例112 序列化与对象克隆 139 实例113 深克隆效率的比较 141 实例114 transient关键字的应用 143 5.7 接口和内部类 145 实例115 使用sort()方法排序 ...