新建对象:反射会调用构造函数,clone不会调用构造函数

class Ins implements java.lang.Cloneable { 

    public Ins() {
        System.out.println("Construct called");

    }  

    @Override
    public Ins clone() throws CloneNotSupportedException {
        return (Ins) super.clone();
    }

}


public class ConstructTest {

 @Test
    public void test() throws InstantiationException, IllegalAccessException, CloneNotSupportedException {
        System.out.println("\n---new Ins() begin---");
        Ins ins1 = new Ins(); 
        System.out.println("---new Ins() end---");
        System.out.println("\n---Ins.class.newInstance() begin---");
        Ins ins2 = Ins.class.newInstance(); 
        System.out.println("---Ins.class.newInstance() end---");
        System.out.println("\n---ins1.clone() begin---");
        Ins ins3 = ins1.clone(); 
        System.out.println("---ins1.clone() end---");
    }

}


输出:

---new Ins() begin---
Construct called
---new Ins() end---

---Ins.class.newInstance() begin---
Construct called
---Ins.class.newInstance() end---

---ins1.clone() begin---
---ins1.clone() end---

 

posted @ 2012-03-21 11:12  lihui1625  阅读(148)  评论(0编辑  收藏  举报