其实,个人觉得你没必要这么写,当然,你一定要这么写,我就试试 。
------
我尝试着分析你的程序,除了补充完整你的程序外,发现,其实你的程序很正确!、
真的,你的程序是正确的 。
你不信,请看下面一个完整的,模仿你的程序:
package com;import javax.swing.JPanel;public class Test {
public static void main(String[] args) throws CloneNotSupportedException {
A a = new A() ;
Test t1 = new Test(a.getConditionA(a)) ; 
Test t2 = new Test(a.getConditionA(a)) ; 
Test t3 = new Test(a.getConditionA(a)) ; 
Test t4 = new Test(a.getConditionA(a)) ; 
}
Test(A a ){

}
}class A extends JPanel implements Cloneable{
@Override
public Object clone() throws CloneNotSupportedException {
A a = null ;
a = (A)super.clone();
return a ;
}
public A getConditionA(A condition) throws CloneNotSupportedException{
A a = (A) condition.clone() ;
return a;
}
}
new Test(a.getConditionA(a)) ;这一句也调用了4次,毫无问题!
--------------
1、或许你自己的程序那里不小心写错了吧 ?
2、其实你这个程序没有意义的,比如,假定我这里要clone的是一个关联了很多对象的类,那么要深拷贝,
可你的程序完全不合格了 !
我个人觉得,与其这样,倒不如用流来解决,当方便得多,虽然效率会低些 ...