可能重复:
What are all the different ways to create an object in Java?
我在某个地方遇到过这样的声明,我们可以用4种方式在Java中创建对象。 我熟悉两个。
另外两个是什么?
答案 0 :(得分:2)
根据here,您可以按如下方式创建Java对象:
- 使用new关键字这是在java中创建对象的最常用方法。我在某处读到了几乎99%的对象都是在其中创建的 这样。
MyObject object = new MyObject();
- 使用Class.forName()如果我们知道类的名称&如果它有一个公共默认构造函数,我们可以用这种方式创建一个对象。
MyObject object =(MyObject) 的Class.forName( “subin.rnd.MyObject”)的newInstance();
- 使用clone()clone()可用于创建现有对象的副本。
MyObject anotherObject = new MyObject(); MyObject对象= anotherObject.clone();
- 使用对象反序列化对象反序列化只不过是从序列化形式创建对象。
ObjectInputStream inStream = new ObjectInputStream(anInputStream); MyObject object =(MyObject)inStream.readObject();
答案 1 :(得分:1)
使用反射,可以调用instance.forName(String className)
。还有instance.clone()
,这是否是真正的初始化是有争议的。
阅读完主题后,似乎只有3种方法来初始化一个对象:
Java语言有三种专用于确保正确的机制 对象的初始化:实例初始化器(也称为实例) 初始化块),实例变量初始化器和 构造函数。 (实例初始值设定项和实例变量 初始化者统称为“初始化者”。)三者 机制导致Java代码在执行时自动执行 对象已创建。使用时为新对象分配内存时 new运算符或类Class的newInstance()方法,Java 虚拟机将确保在您之前运行初始化代码 可以使用新分配的内存。如果你设计你的课程 初始化器和构造器始终生成有效状态 新创建的对象,任何人都无法创建和 使用未正确初始化的对象。
<强>参考:强>
答案 2 :(得分:0)
有两个newInstance
s:
Constructor
的反射:java.lang.reflect.Constructor.newInstance(Object ...)Class
:java.lang.Class.newInstance()