真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java創(chuàng)建對(duì)象的方法

一、使用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ù)。

Constructor constructor = 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)文章!


分享標(biāo)題:java創(chuàng)建對(duì)象的方法
網(wǎng)站路徑:http://weahome.cn/article/poccsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部