可能重复:
在 Java 中创建对象的所有不同方法是什么?
我在某处遇到过这样的说法,我们可以用 4 种方式在 Java 中创建对象。我熟悉两个。
- 使用新关键字
- 使用 newInstance() 方法
另外两个是什么?
可能重复:
在 Java 中创建对象的所有不同方法是什么?
我在某处遇到过这样的说法,我们可以用 4 种方式在 Java 中创建对象。我熟悉两个。
另外两个是什么?
根据here,您可以按如下方式创建Java对象:
- 使用 new 关键字 这是在 java 中创建对象的最常用方法。我在某处读到几乎 99% 的对象都是以这种方式创建的。
我的对象对象 = 新的我的对象();
- 使用 Class.forName() 如果我们知道类的名称并且如果它有一个公共的默认构造函数,我们可以用这种方式创建一个对象。
MyObject 对象 = (MyObject) Class.forName("subin.rnd.MyObject").newInstance();
- 使用 clone() clone() 可用于创建现有对象的副本。
MyObject anotherObject = new MyObject(); MyObject 对象 = anotherObject.clone();
- 使用对象反序列化对象反序列化只不过是从其序列化形式创建一个对象。
ObjectInputStream inStream = new ObjectInputStream(anInputStream); MyObject 对象 = (MyObject) inStream.readObject();
使用反射,可以调用instance.forName(String className)
. 还有instance.clone()
,这是否是真正的初始化还有待商榷。
在阅读了这个主题之后,似乎只有 3 种初始化对象的方法:
Java 语言具有三种专门用于确保正确初始化对象的机制:实例初始化程序(也称为实例初始化块)、实例变量初始化程序和构造函数。(实例初始化程序和实例变量初始化程序统称为“初始化程序”。)所有这三种机制都会导致 Java 代码在创建对象时自动执行。当您使用 new 运算符或 Class 类的 newInstance() 方法为新对象分配内存时,Java 虚拟机将确保在您可以使用新分配的内存之前运行初始化代码。如果你设计你的类,使得初始化器和构造器总是为新创建的对象产生一个有效的状态,
参考:
有两个newInstance
s:
Constructor
:java.lang.reflect.Constructor.newInstance(Object...)Class
:java.lang.Class.newInstance()