新建对象:反射会调用构造函数,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---

阅读更多
文章标签: class
个人分类: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭