java创建对象的方法

1、使用new关键字创建对象

2、使用Class类的newInstance方法创建对象

即使用Student student = Student.class.newInstance() 或 Student student = (Student)Class.forName("根路径.Student").newInstance()

3、使用Constructor类的newInstance方法创建对象

本方法和Class类的newInstance方法很像,java.lang.relect.Constructor类里也有一个newInstance方法可以创建对象

4、使用clone方法创建对象

用clone方法创建对象并不会调用任何构造函数。

要使用clone方法,我们需要先实现Cloneable接口并实现其定义的clone方法。

5、使用反序列化创建对象

当我们序列化和反序列化一个对象,jvm会给我们创建一个单独的对象。在反序列化时,jvm创建对象并不会调用任何构造函数。
为了反序列化一个对象,需要让类实现Serializable接口

总结:

用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造。

newInstance( )是一个方法,而new是一个关键字,其次,Class下的newInstance()的使用有局限,因为它生成对象只能调用无参的构造函数,而使用new关键字生成对象没有这个限制。
Class.forName("")返回的是类
Class.forName("").newInstance()返回的是object

使用new关键字 }→调用了构造函数
使用Class类的newInstance方法 } →调用了构造函数
使用Constructor类的newInstance方法 }→调用了构造函数
使用clone方法 } →没有调用构造函数
使用反序列化 } →没有调用构造函数

猜你喜欢

转载自blog.csdn.net/JackGong1999/article/details/88042148