我们都知道如何创建任何类的对象。在Java中创建对象的最简单方法是使用new关键字。让我们探索在Java中创建没有new关键字的对象的其他方法。
目录
使用Class.forName()和Class.newInstance()
ClassLoader loadClass()
使用Object.clone()
反序列化
用反射
注意:在给定的示例中,我只编写伪代码。要构建完整的完整工作示例代码,请阅读相关功能。
使用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();
使用反射创建新对象
反射也是在大多数可用框架中创建新实例的流行方式。
constructor.newInstance(); 或
class.newInstance();