不通过构造方法能创建对象吗?

Java 创建对象的方式:

  1. 用 new 语句创建对象
  2. 运用反射,调用 java.lang.Class 或 java.lang.reflect.Constructor 类的 newInstance() 方法
  3. 调用对象的 clone() 方法
  4. 运用反序列化手段,调用 java.io.ObjectInputStream 对象的 readObject() 方法

1、2 会调用构造函数
3、4 不会调用构造函数

  1. package constxiong.interview;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.Serializable;
  7. /**
  8. * 测试创建对象
  9. * @author ConstXiong
  10. * @date 2019-10-31 11:53:31
  11. */
  12. public class TestNewObject implements Cloneable, Serializable{
  13. private static final long serialVersionUID = 1L;
  14. public TestNewObject() {
  15. System.out.println("Constructor init");
  16. }
  17. public static void main(String[] args) throws Exception {
  18. TestNewObject o1 = new TestNewObject();
  19. TestNewObject o2 = TestNewObject.class.newInstance();
  20. TestNewObject o3 = TestNewObject.class.getConstructor().newInstance();
  21. TestNewObject o4 = (TestNewObject)o1.clone();
  22. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  23. ObjectOutputStream oos = new ObjectOutputStream(baos);
  24. oos.writeObject(o1);
  25. ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
  26. TestNewObject o5 = (TestNewObject)ois.readObject();
  27. }
  28. }

打印

  1. Constructor init
  2. Constructor init
  3. Constructor init

 

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    Java

    内存泄漏和内存溢出的区别

    2020-7-23 20:36:17

    Java

    匿名内部类可以继承类或实现接口吗?为什么?

    2020-7-23 20:37:14

    本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策。若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
    ⚠️
    本站所发布的一切源码、模板、应用等文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权。本站内容适用于DMCA政策
    若您的权利被侵害,请与我们联系处理,站长 QQ: 84087680 或 点击右侧 私信:盾给网 反馈,我们将尽快处理。
    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索