Java – 不使用“new”关键字创建对象

Java – 不使用“new”关键字创建对象

原文: https://howtodoinjava.com/puzzles/how-to-create-an-instance-of-any-class-without-using-new-keyword/

我们都知道如何创建任何类的对象。 在 Java 中创建对象的最简单方法是使用new关键字。 让我们探讨一下 Java 中无需使用new新关键字即可创建对象的其他方法。

Table of contents

Using Class.forName() and Class.newInstance()
ClassLoader loadClass()
Using Object.clone()
Deserialization
Using reflection

注意:在给定的示例中,我仅在编写伪代码。 要构建完整的,可以正常工作的示例代码,请阅读相关功能。

使用Class.newInstance()创建对象

Class ref = Class.forName("DemoClass");
DemoClass obj = (DemoClass) ref.newInstance();

Class.forName()将类加载到内存中。 要创建此类的实例,我们需要使用newInstance()

使用类加载器的loadClass()创建对象

就像上述方法一样,类加载器的loadClass()方法执行相同的操作。 它使用相同类的现有实例创建类的新实例。

instance.getClass().getClassLoader().loadClass("NewClass").newInstance();

使用Object.clone()创建对象

这也是拥有新的类的独立实例的方法。

NewClass obj = new NewClass();
NewClass obj2 = (NewClass) obj.clone();

使用序列化和反序列化创建新对象

如果您已经阅读了本文,则可以理解,序列化和反序列化也是在系统中拥有类的另一个实例的一种方式。

ObjectInputStream objStream = new ObjectInputStream(inputStream);
 NewClass obj = (NewClass ) inStream.readObject();

使用反射创建新对象

反射也是在大多数可用框架中创建新实例的流行方法。

builder.newInstance();class.newInstance();

如果您认为我没有其他可能的方法,请告诉我。

学习愉快!