在java中支持java的克隆操作,直接使用Object的clone()方法即可。。。
看源码:你会看到此方法是 protected Object clone() throws CloneNotSupportedException
以上方法是受保护的,所以子类必须覆写此方法
package test;
public class CloneTest
{
private String name;
public String
getName() {
return name ;
}
public void setName(String
name) {
this .name =
name;
}
public CloneTest(String
name) {
this .name =
name;
}
@Override
public Object
clone() throws CloneNotSupportedException
{
// TODO Auto-generated
method stub
return super .clone();
}
public static void main(String[]
args) throws Exception {
CloneTest cloneTest= new CloneTest("like" );
CloneTest cloneTest2=(CloneTest)cloneTest.clone();//克隆对象
cloneTest2.setName( "hello" );
System. out.println( "克隆之前的对象---->" +cloneTest.getName());
System. out.println( "克隆之后的对象---->" +cloneTest2.getName());
}
}
结果:
Exception in thread "main" java.lang.CloneNotSupportedException :
test.CloneTest
at java.lang.Object.clone( Native
Method )
at test.CloneTest.clone( CloneTest.java:27 )
at test.CloneTest.main( CloneTest.java:35 )
那是因为克隆需要实现一个标示接口(没有具体的内容的接口)Cloneable
public class CloneTest implements Cloneable{
private String name;
public String
getName() {
return name ;
}
public void setName(String
name) {
this .name =
name;
}
public CloneTest(String
name) {
this .name =
name;
}
@Override
public Object
clone() throws CloneNotSupportedException
{
// TODO Auto-generated
method stub
return super .clone();
}
public static void main(String[]
args) throws Exception {
CloneTest cloneTest= new CloneTest ("like" );
CloneTest cloneTest2=(CloneTest)cloneTest.clone(); //克隆对象
cloneTest2.setName( "hello" );
System. out.println( "克隆之前的对象---->" +cloneTest.getName());
System. out.println( "克隆之后的对象---->" +cloneTest2.getName());
}
}
结果:
克隆之前的对象---->like
克隆之后的对象---->hello