五種方法建立java物件,你知道幾種呢?
五種方法建立java物件
作為Java
開發人員,我們通常每天都會建立許多物件,但是我們總是使用新的或依賴管理系統(例如Spring
)來建立這些物件。但是,有更多方法可以建立本文中將要研究的物件。
用Java建立物件的共有5種核心方式,下面將以其示例加以說明,然後介紹建立物件的行的位元組碼。但是,有很多API可以為我們建立物件,但是這些API還將間接使用這5種核心方式之一,例如Spring BeanFactory
。
如果您將執行最後給出的程式,則會看到方法1、2、3使用建構函式建立物件,而4、5沒有呼叫建構函式建立物件。
1.使用新關鍵字
這是建立物件的最常見和常規的方法,也是一種非常簡單的方法。通過使用此方法,我們可以呼叫要呼叫的任何建構函式(無引數的建構函式和引數化的)。
1 |
|
2.使用Class類的newInstance()方法
我們還可以使用Class
類的newInstance()
方法建立一個物件。此newInstance()
方法呼叫no-arg
建構函式來建立物件。
我們可以通過newInstance()
通過以下方式建立物件:
1 2 3 4 |
|
3.使用構造方法類的newInstance()方法
與Class類的newInstance()
方法類似,java.lang.reflect.Constructor
類中有一個newInstance()
方法可用於建立物件。我們還可以使用此newInstance()
方法來呼叫引數化建構函式和私有建構函式。
1 2 3 |
|
這兩種newInstance()
方法都被稱為建立物件的反射方式。實際上,Class
類的newInstance()
方法在內部使用了Constructor
類的newInstance()
方法。這就是為什麼最好使用後一種方法,並且也將其用於諸如Spring
,Hibernate,Struts等不同框架的原因。要了解這兩種newInstance()方法之間的區別,請閱讀使用Example在Java中通過Reflection建立物件。
4.使用clone()方法:
每當我們在任何物件上呼叫clone()
時,JVM實際上都會為我們建立一個新物件,並將先前物件的所有內容複製到其中。使用clone
方法建立物件不會呼叫任何建構函式。
要在物件上使用clone()
方法,我們需要實現Cloneable
並在其中定義clone()
方法。
1 |
|
Java克隆是Java社群中最值得探討的話題,它的確有其缺點,但是在物件完全滿足Java克隆的強制條件之前,它仍然是建立任何物件的副本的最流行和最簡單的方法。
5.使用反序列化
每當我們序列化然後反序列化一個物件時, JVM就會為我們建立一個單獨的物件。在反序列化中,JVM不使用任何建構函式來建立物件。要反序列化物件,我們需要在類中實現Serializable介面。
1 2 |
|
正如我們在上面的位元組碼中看到的那樣,所有四個方法呼叫都轉換為invokevirtual(這些方法直接處理物件的建立),除了第一個轉換為兩個呼叫的方法是一個是新的,另一個是呼叫特殊的(對建構函式的呼叫)。
例:
讓我們考慮一個我們要為其建立物件的Employee
類:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
在下面的Java程式中,我們將以所有5種方式建立Employee物件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
該程式將給出以下輸出:
1 2 3 4 5 6 7 8 |
|
完整的Java初級,高階對應的學習路線和資料!專注於java開發。分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分散式及面試資料、開源專案,助力開發者成長!
相關文章
- java建立物件的五種方式Java物件
- 構建Java物件的五種方法Java物件
- 實現單例模式的 9 種方法,你知道幾種?單例模式
- 建立物件的幾種模式物件模式
- JS建立物件幾種不同方法詳解JS物件
- 最全--Java中建立物件的5種方法Java物件
- js建立物件的幾種方式JS物件
- javascript建立物件的幾種方式JavaScript物件
- [php]建立物件的幾種形式PHP物件
- 49種軟體測試方法,你知道幾個?
- 你必須知道的幾種java容器(集合類)Java
- 使用 JS 來動態操作 css ,你知道幾種方法?JSCSS
- js中建立物件的幾種方式JS物件
- JavaScript 建立類/物件的幾種方式JavaScript物件
- 總結49種軟體測試方法,你知道幾個?
- JavaScript建立物件的多種方法JavaScript物件
- JavaScript物件的建立方式有幾種?JavaScript物件
- js中建立物件的幾種常用方式JS物件
- [轉載]javascript建立物件的幾種方式JavaScript物件
- Java的幾種建立例項方法的效能對比Java
- JS遍歷物件的幾種方法JS物件
- js判斷物件的幾種方法JS物件
- JavaScript建立物件4種方法詳解JavaScript物件
- Java中建立物件的5種方式Java物件
- 你知道那幾種資料遷移工具?
- 這幾種Java異常處理方法,你會嗎?Java
- C++中有三種建立物件的方法C++物件
- 這五種ios簽名型別你知道多少?iOS型別
- java程式轉為exe幾種方法Java
- java 遍歷map 方法 集合 五種的方法Java
- 在 .NET 中建立物件的幾種方式的對比物件
- 你知道JavaScript的繼承有幾種寫法嗎?JavaScript繼承
- 張馳諮詢:企業流程最佳化的五種方法,你知道嗎
- java單例的幾種實現方法Java單例
- 監聽某個物件事件的幾種方法物件事件
- android 建立多執行緒的幾種方法Android執行緒
- Unreal Cook Book:建立物件的的幾種姿勢(C++)Unreal物件C++
- 5種常見的黑客攻擊手段,你知道幾個?黑客