毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> java技术 >> 正文

java.lang.CloneNotSupportedException

更新时间:2013-12-19:  来源:毕业论文

public class CommonCondtionPanel extends JPanel implements Cloneable
{
    public Object clone()
    {
        CommonCondtionPanel condition=null;
        try
        {
            condition = (CommonCondtionPanel)super.clone();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return condition;
    }
    public CommonCondtionPanel getConditionPanel(CommonCondtionPanel condition)
        throws Exception
    {
        CommonCondtionPanel conditionPanel = (CommonCondtionPanel)condition.clone();
    }


在另一个类中我要多次调用CommonCondtionPanel :

CommonCondtionPanel  condition = new CommonCondtionPanel ();
{
   Test test1 = new Test(condition.getConditionPanel(condition ));
}
{
  Test test2 = new Test(condition.getConditionPanel(condition ));

}

老是抛出java.lang.CloneNotSupportedException:
网上的解释是:
Object类的这个clone方法完全是为了子类覆盖它服务的,并不是让子类直接调用的,这也就是为什么在覆盖clone方法时一般到调用super.clone()的原因。clone方法是可以被覆盖的,但是必须实现Cloneable接口,所以你覆盖后,它就不会调用父类的方法,而调用你覆盖后的方法。
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的是一个关联了很多对象的类,那么要深拷贝,
可你的程序完全不合格了 !
我个人觉得,与其这样,倒不如用流来解决,当方便得多,虽然效率会低些 ... 

没有用clone()的方法,原因是我实例一个对象,多次调用,只有最后一个生效,后来我在树的点击事件中重新添加了

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。