💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# Java – 不使用“`new`”关键字创建对象 > 原文: [https://howtodoinjava.com/puzzles/how-to-create-an-instance-of-any-class-without-using-new-keyword/](https://howtodoinjava.com/puzzles/how-to-create-an-instance-of-any-class-without-using-new-keyword/) 我们都知道如何创建任何类的对象。 在 Java 中创建对象的最简单方法是使用**`new`**关键字。 让我们探讨一下 Java 中无需使用`new`新关键字即可创建对象的其他方法。 ```java Table of contents Using Class.forName() and Class.newInstance() ClassLoader loadClass() Using Object.clone() Deserialization Using reflection ``` > **注意**:在给定的示例中,我仅在编写伪代码。 要构建完整的,可以正常工作的示例代码,请阅读相关功能。 ## 使用`Class.newInstance()`创建对象 ```java Class ref = Class.forName("DemoClass"); DemoClass obj = (DemoClass) ref.newInstance(); ``` `Class.forName()`将类加载到内存中。 要创建此类的实例,我们需要使用`newInstance()`。 ## 使用类加载器的`loadClass()`创建对象 就像上述方法一样,类加载器的`loadClass()`方法执行相同的操作。 它使用相同类的现有实例创建类的新实例。 ```java instance.getClass().getClassLoader().loadClass("NewClass").newInstance(); ``` ## 使用`Object.clone()`创建对象 这也是拥有新的类的独立实例的方法。 ```java NewClass obj = new NewClass(); NewClass obj2 = (NewClass) obj.clone(); ``` ## 使用序列化和反序列化创建新对象 如果您已经阅读了[本文](//howtodoinjava.com/java/serialization/how-to-do-deep-cloning-using-in-memory-serialization-in-java/ "How to do deep cloning using in memory serialization in java"),则可以理解,序列化和反序列化也是在系统中拥有类的另一个实例的一种方式。 ```java ObjectInputStream objStream = new ObjectInputStream(inputStream); NewClass obj = (NewClass ) inStream.readObject(); ``` ## 使用反射创建新对象 反射也是在大多数可用框架中创建新实例的流行方法。 `builder.newInstance();`或`class.newInstance();` 如果您认为我没有其他可能的方法,请告诉我。 学习愉快!