十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
可以重载clone方法克隆对象
目前创新互联已为上千家的企业提供了网站建设、域名、网站空间、网站托管运营、企业网站设计、南丹网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
首先、该类要实现Cloneable的接口,不然执行clone方法的时候会抛出CloneNotSupportedException异常
然后、就在该类重载clone方法,自己加上克隆的逻辑,本人小白,手敲的代码
public class Book implement Cloneable{
private String name;
public Book(String name){
this.name=name;
}
@Override
public Book clone() throws CloneNotSupportedException {
return new Book(this.name);
}
}
从楼主对回答的追问上发现,楼主的连JAVA基本的语法都很差啊。=号是赋值运算符,不是比较。
double[] vectorValue;
vectorValue = vectorValue.clone();
这个段代码执行肯定报错了。但他还的意思还是很明确的。
首先:double[] vectorValue; 这个是定义了一个double类型的数组变量vectorValue。
其次:vectorValue = vectorValue.clone(); //这个是将vectorValue 克隆一份,赋值给自己。也就是说vectorValue变量指向了新的一块内存区域。
举个例子可能更能说明问题。
public class TestMain implements Cloneable {
private int i ;
public TestMain(int i){
this.i = i ;
}
@Override
protected Object clone() {
// TODO Auto-generated method stub
return new TestMain(this.getI()+1);
}
public int getI() {
return i;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestMain tm1 = new TestMain(1);
TestMain tm2 = tm1;
tm1 = (TestMain)tm1.clone();
System.out.println(tm1.getI()); //tm1指向的是通过clone()方法创建的新的对象的地址,i的值已经是2了。
System.out.println(tm2.getI()); //tm2指向的还是tm1创建时的地址,i的值为1
}
}
final只是不能修改内部值,但是可以修改引用.你a=b.clone();已经把a的引用给修改了!