【就你不知道-Java clone】
来源:互联网 发布:linux snmp服务器配置 编辑:程序博客网 时间:2024/04/30 13:41
请看下面的代码
一:code
public class Clone implements Cloneable{private int num;public int getNum() {return num;}public void setNum(int num) {this.num = num;}@Overrideprotected Object clone() throws CloneNotSupportedException {Object obj = null;try {obj = super.clone();} catch (Exception e) {e.printStackTrace();}return obj;}}
二:测试一
@Testpublic void test() {try {Clone c = new Clone();c.setNum(2);Clone c2 = (Clone)c.clone();c2.setNum(4);System.out.println(c);System.out.println(c2);System.out.println(c==c2);System.out.println(c.getNum());System.out.println(c2.getNum());} catch (CloneNotSupportedException e) {e.printStackTrace();}}
输出:
Clone@ad3ba4
Clone@126b249
false
2
4
注:clone重新分配内存空间给clone后的对象。
三:
@Testpublic void test2(){Vector<Clone> v = new Vector<Clone>();v.add(new Clone());Vector<Clone> v2 = (Vector<Clone>) v.clone();v2.get(0).setNum(5);System.out.println(v);System.out.println(v2);System.out.println(v==v2);System.out.println(v.equals(v2));System.out.println(v.get(0).getNum());System.out.println(v2.get(0).getNum());}
[Clone@45a877]
[Clone@45a877]
false
true
5
5
注:个人看看,能看出来什么不。
四:
@Testpublic void test3() throws CloneNotSupportedException{class TTTT implements Cloneable{Clone c ;public Clone getC() {return c;}public void setC(Clone c) {this.c = c;}@Overrideprotected Object clone() throws CloneNotSupportedException {// TODO Auto-generated method stubreturn super.clone();}};TTTT t = new TTTT();Clone c = new Clone();c.setNum(2);t.setC(c);TTTT t2 = (TTTT) t.clone();t2.getC().setNum(3);System.out.println(t);System.out.println(t2);System.out.println(t==t2);System.out.println(t.equals(t2));System.out.println(t.getC().getNum());System.out.println(t2.getC().getNum());}
Clone$1TTTT@126b249
Clone$1TTTT@182f0db
false
false
3
3
注:clone了TTTT,有2个对象TTTT在内存中,但是TTTT中的clone仍然是同一个对象。
实现clone需要如下操作:
- 【就你不知道-Java clone】
- 【就你不知道-Java 字符串】
- 【就你不知道-Java 继承】
- 【就你不知道-Java 建造模式】
- 【就你不知道-Java 标识接口】
- 【就你不知道-Java 适配器模式】
- 【就你不知道-Java 合成模式】
- java的clone你知道多少?
- 常识-就怕你不知道一条
- 【就你不知道-Flex 共享数据】
- 【就你不知道-Ext PagingToolbar】
- 【就你不知道android】-自定义字体
- 就你不知道:二进制兼容性
- 【就你不知道-Java 冒泡==你是不是高富帅】
- 【ITOO】--不知道多线程你就就out了
- 百度一下你就知道百度不知道
- 你不知道的JAVA
- 字体图标你还不知道你就out啦
- 感觉
- RSA与ECC比较
- DEDECMS拿SHELL EXP
- Margin Collapsing
- JavaScript 通过字符串参数(函数名),调用对应的函数
- 【就你不知道-Java clone】
- C语言中static的作用
- Java中获取两个时间点间间隔值的方法
- CMD下开启3389服务
- 大数乘法
- Android进入fastboot模式二法
- printf函数,能不能简单点?----小话c语言(2)
- mysql注入对and or的过滤及uinon select等过滤的一个方法突破
- 视频编码的基本原理及基本框架