Java 中建立物件實例主要有五種方式,各有適用場景與效能特性。
MyClass obj = new MyClass();
MyClass obj = (MyClass) Class.forName("com.pkg.MyClass").newInstance();
publicConstructor.newInstance()MyClass obj1 = new MyClass(); MyClass obj2 = (MyClass) obj1.clone();
Cloneable 介面Constructorctor = MyClass.class.getConstructor(); MyClass obj = ctor.newInstance();
setAccessible(true))ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.ser"));
MyClass obj = (MyClass) ois.readObject();
SerializableserialVersionUID 需一致| 方式 | 呼叫建構子 | 需無參建構子 | 適用場景 |
|---|---|---|---|
| new | 是 | 否 | 一般開發 |
| Class.newInstance() | 是 | 是 | 舊版反射(不推薦) |
| clone() | 否 | 否 | 物件拷貝、原型模式 |
| Constructor.newInstance() | 是 | 否 | 框架、動態載入 |
| 反序列化 | 否 | 否 | 持久化、網路傳輸 |