2012-05-28 67 views
1

可能重複:
What are all the different ways to create an object in Java?方式在Java中創建對象

我碰到這個聲明是什麼地方,我們可以在4種方式在Java中創建對象。 我熟悉兩種。

  1. 使用new關鍵字
  2. 使用newInstance()方法

什麼是其他兩個?

+1

閱讀此主題並獲取您的匿名http://stackoverflow.com/questions/95419/what-are-all-the-different-ways-to-create-an-object-in-java – Saad

+0

這不僅是一個複製品e,使用「創建Java對象的四種方式」可以立即找到多個(基本相同的)答案。 – NPE

回答

2

here,您可以創建Java對象如下:

  • 使用new關鍵字這是最COMM在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

使用反射,可以調用instance.forName(String className)。還有instance.clone(),這是否是真正的初始化值得商榷。

閱讀關於這個問題後,似乎只有3種方法來初始化的對象:

Java語言有一個專門用來確保適當的 初始化對象的三種機制:實例初始化(也稱爲實例 初始化塊),實例變量初始值設定項和構造函數。 (實例初始值設定項和實例變量 統稱爲「初始值設定項」。)所有這三種 機制都會導致Java代碼在創建 對象時自動執行。當您使用 new運算符或class Class的newInstance()方法爲新對象分配內存時,Java 虛擬機將確保運行初始化代碼,然後 可以使用新分配的內存。如果您設計的類如 初始化器和構造函數始終爲 新創建的對象生成有效狀態,則任何人都無法創建, 將使用未正確初始化的對象。

參考:

0

有兩種newInstance S:

  • 反思與Constructor:java.lang.reflect.Constructor.newInstance(對象...)
  • Class:java.lang.Class.newInstance ()