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

原创 2012年03月21日 11:12:25

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---

相关文章推荐

详解Java中的clone方法 -- 原型模式

Java中对象的创建 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那...

C++中如果声明一个对象指针时,会不会调用构造函数?

C++中如果声明一个对象指针时,会不会调用构造函数?

对象反序列化时,如果父类未实现序列化接口,则反序列出的对象会再次调用父类的构造函数来完成属于父类那部分内容的初始化

对象反序列化时,如果父类未实现序列化接口,则反序列出的对象会再次调用父类的构造函数来完成属于父类那部分内容的初始化。 1、当将一个父类没有实现序列化的对象son使用ObjectOutputStream...

Java继承时构造函数的调用

  • 2013年08月06日 15:30
  • 22KB
  • 下载

Java继承时构造函数的调用

  • 2007年09月25日 02:49
  • 4KB
  • 下载

理解C++存在继承和组合的对象构造函数调用顺序

前言: Hello,全世界早上好啊,哈哈,9月你好,2015年9月的第一天,也是自己本科生涯的最后一年了,接下来就是校招走上自己的职场,昨天是大四的第一节课,上的是软件工程,挺喜欢的一门课,...

c#构造函数的调用过程

  • 2011年07月03日 21:19
  • 688B
  • 下载

含类对象子类的构造函数

  • 2013年06月02日 12:57
  • 2KB
  • 下载

父类、构造函数、成员对象的调用时机

在使用new创建对象时,主要完成四项工作: 1 构造父类成员对象 2 构造子类成员对象 3 调用父类构造函数 4 调用子类构造函数 这四项工作的时间顺序是怎样的呢? 原则是:先父类后子类,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:新建对象:反射会调用构造函数,clone不会调用构造函数
举报原因:
原因补充:

(最多只允许输入30个字)