一、使用new關(guān)鍵字
云溪ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
這是我們最常見(jiàn)的也是最簡(jiǎn)單的創(chuàng)建對(duì)象的方式,通過(guò)這種方式我們還可以調(diào)用任意的構(gòu)造函數(shù)(無(wú)參的和有參的)。
例如:
User user = new User();
二、使用反射機(jī)制
運(yùn)用反射手段,調(diào)用Java.lang.Class
或者java.lang.reflect.Constructor
類(lèi)的newInstance()
實(shí)例方法。
1、使用Class類(lèi)的newInstance方法
可以使用Class類(lèi)的newInstance方法創(chuàng)建對(duì)象。這個(gè)newInstance方法調(diào)用無(wú)參的構(gòu)造函數(shù)創(chuàng)建對(duì)象。
//創(chuàng)建方法1 User user = (User)Class.forName("根路徑.User").newInstance(); //創(chuàng)建方法2(用這個(gè)最好) User user = User.class.newInstance();
2、使用Constructor類(lèi)的newInstance方法
和Class類(lèi)的newInstance方法很像, java.lang.reflect.Constructor類(lèi)里也有一個(gè)newInstance方法可以創(chuàng)建對(duì)象。我們可以通過(guò)這個(gè)newInstance方法調(diào)用有參數(shù)的和私有的構(gòu)造函數(shù)。
Constructorconstructor = User.class.getConstructor(); User user = constructor.newInstance();
這兩種newInstance方法就是大家所說(shuō)的反射。事實(shí)上Class的newInstance方法內(nèi)部調(diào)用Constructor的newInstance方法。
三、使用clone方法
無(wú)論何時(shí)我們調(diào)用一個(gè)對(duì)象的clone方法,jvm就會(huì)創(chuàng)建一個(gè)新的對(duì)象,將前面對(duì)象的內(nèi)容全部拷貝進(jìn)去。用clone方法創(chuàng)建對(duì)象并不會(huì)調(diào)用任何構(gòu)造函數(shù)。
要使用clone方法,我們需要先實(shí)現(xiàn)Cloneable接口并實(shí)現(xiàn)其定義的clone方法。
例如:
public class CloneTest implements Cloneable{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public CloneTest(String name, int age) { super(); this.name = name; this.age = age; } public static void main(String[] args) { try { CloneTest cloneTest = new CloneTest("wangql",18); CloneTest copyClone = (CloneTest) cloneTest.clone(); System.out.println("newclone:"+cloneTest.getName()); System.out.println("copyClone:"+copyClone.getName()); } catch (CloneNotSupportedException e) { e.printStackTrace(); } }
執(zhí)行:
newclone:wangql copyClone:wangql
四、使用反序列化
當(dāng)我們序列化和反序列化一個(gè)對(duì)象,jvm會(huì)給我們創(chuàng)建一個(gè)單獨(dú)的對(duì)象。在反序列化時(shí),jvm創(chuàng)建對(duì)象并不會(huì)調(diào)用任何構(gòu)造函數(shù)。
為了反序列化一個(gè)對(duì)象,我們需要讓我們的類(lèi)實(shí)現(xiàn)Serializable接口。
以上就是java中創(chuàng)建對(duì)象的方法有幾種的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!