StringBuffer为什么不能克隆?

eimhee 2008-04-12 10:59:22
StringBuffer为什么不能克隆?
StringBuffer buffer = new StringBuffer();
StringBuffer buffer2 = buffer.clone();
要什么样的对象才能进行克隆?
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuanwang 2008-04-13
  • 打赏
  • 举报
回复
恩,大家都很早啊。。。。。要实现Cloneable接口,,,,,,
因为有些类已经实现好了,所以不用自己写代码
flyseahappy 2008-04-13
  • 打赏
  • 举报
回复
楼上的正解
anqini 2008-04-12
  • 打赏
  • 举报
回复
不好意思,上面代码设置颜色的地方出错了... 是多余的了


package zhao;

public class TestClone implements Cloneable {

/**
* @param args
*/
public static void main(String[] args) {
TestClone t = new TestClone();
TestClone t1 = (TestClone)t.clone();

}
public Object clone() {
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}

}

anqini 2008-04-12
  • 打赏
  • 举报
回复
因为clone()方法是protected类型的,所以,下面代码:

package zhao;

public class testClone implements Cloneable {

/**
* @param args
*/
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
StringBuffer buffer2 = (StringBuffer)sb.clone(); // 因为clone()方法是protected类型的,所以不能在另一个类中使用StringBuffer的clone方法,没发实现

}
}


你要克隆对象得做 2件事情
第一:要实现Cloneable接口(红色部分)
第二:重写(覆盖)clone方法(红色部分)

代码如下:


package zhao;

public class TestClone implements Cloneable {

/**
* @param args
*/
public static void main(String[] args) {
TestClone t = new TestClone();
TestClone t1 = (TestClone)t.clone();

}
public Object clone() {
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}

}

rypgood 2008-04-12
  • 打赏
  • 举报
回复
你得判断这个类有没有实现Cloneable,实现了的才可以克隆的 判断的方法用instanceof来判断,比如:
Test t=new Test();
Test tmp;
if(t instanceof Cloneable)
{
tmp=t.clone();
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧