黑马程序员技术交流社区

标题: 【上海校区】Java中创建对象的集中方式 [打印本页]

作者: 阿莱    时间: 2019-4-15 09:19
标题: 【上海校区】Java中创建对象的集中方式
本帖最后由 阿莱 于 2019-4-15 09:26 编辑

Java中创建对象的集中方式

作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字、使用Class类的newInstance方法、使用Constructor类的newInstance方法、使用Clone方法、使用反序列化。

  从上面的例子可以看出来,除了使用new关键字之外的其他方法全部都是转变为invokevirtual(创建对象的直接方法),使用被new的方式转变为两个调用,new和invokespecial(构造函数调用)。

另外:两种newInstance方法有没有区别?
   
     ☆ Class类位于java的lang包中,而构造器类是java反射机制的一部分。
  ☆ Class类的newInstance只能触发无参数的构造方法创建对象,而构造器类的newInstance能触发有参数或者任意参数的构造方法来创建对象。
  ☆ Class类的newInstance需要其构造方法是共有的或者对调用方法可见的,而构造器类的newInstance可以在特定环境下调用私有构造方法来创建对象。
  ☆ Class类的newInstance抛出类构造函数的异常,而构造器类的newInstance包装了一个InvocationTargetException异常。
  Class类本质上调用了反射包构造器类中无参数的newInstance方法,捕获了InvocationTargetException,将构造器本身的异常抛出。

---------------------

作者:jason.bai

来源:博客园

原文:https://www.cnblogs.com/baizhanshi/p/5896092.html


版权声明:本文为博主原创文章,转载请附上博文链接





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2