java中創(chuàng)建對(duì)象有哪幾種方式

1.用new 創(chuàng)建對(duì)象,這是最常用的創(chuàng)建對(duì)象的方法。

User user1 = new User(2,"青秧");

2.運(yùn)用反射,調(diào)用Java.lang.Class或者java.lang.reflect.Constructor類(lèi)的newInstance()實(shí)例方法。

Class<?> c = Class.forName("com.itheima.User");//獲取字節(jié)碼文件對(duì)象
User user=(User)c.newInstance();

3.調(diào)用對(duì)象的clone()方法

clone()表示克隆,使用這個(gè)實(shí)例化一個(gè)對(duì)象的前提是:前面已經(jīng)有一個(gè)實(shí)例化過(guò)的對(duì)象
User user1 = new User(2,"青秧");
User user2 = (User) user1.clone();

4.運(yùn)用反序列化手段,調(diào)用java.io.ObjectInputStream對(duì)象的readObject()方法。
public class Demo01_ObjectOutputStream {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
//      writeObj();
        readObj();
    }
    
    public static void writeObj() throws  IOException{
    //序列化
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:\\work\\abc\\person.txt"));
        
        Person p = new Person("柳巖",38);
        //寫(xiě)對(duì)象
        oos.writeObject(p);
        
        oos.close();
    }
    
    public static void readObj() throws IOException, ClassNotFoundException{
    //反序列化
        ObjectInputStream ois= new ObjectInputStream(new FileInputStream("d:\\work\\abc\\person.txt"));
        //讀對(duì)象
        Object obj = ois.readObject();//相當(dāng)于new Person();
        System.out.println(obj);
        
        ois.close();
    }
}

1和2都會(huì)明確的顯式的調(diào)用構(gòu)造函數(shù) ;
3是在內(nèi)存上對(duì)已有對(duì)象的影印,所以不會(huì)調(diào)用構(gòu)造函數(shù) ;
4是從文件中還原類(lèi)的對(duì)象,也不會(huì)調(diào)用構(gòu)造函數(shù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容