欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

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

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

          一、使用new關(guān)鍵字

          這是我們最常見的也是最簡(jiǎn)單的創(chuàng)建對(duì)象的方式,通過這種方式我們還可以調(diào)用任意的構(gòu)造函數(shù)(無參的和有參的)。

          例如:

          User user = new User();

          二、使用反射機(jī)制

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

          相關(guān)視頻教程分享:java教學(xué)視頻

          1、使用Class類的newInstance方法

          可以使用Class類的newInstance方法創(chuàng)建對(duì)象。這個(gè)newInstance方法調(diào)用無參的構(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類的newInstance方法

          和Class類的newInstance方法很像, java.lang.reflect.Constructor類里也有一個(gè)newInstance方法可以創(chuàng)建對(duì)象。我們可以通過這個(gè)newInstance方法調(diào)用有參數(shù)的和私有的構(gòu)造函數(shù)。

          Constructor<User> constructor = User.class.getConstructor(); User user = constructor.newInstance();

          這兩種newInstance方法就是大家所說的反射。事實(shí)上Class的newInstance方法內(nèi)部調(diào)用Constructor的newInstance方法。

          三、使用clone方法

          無論何時(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ì)象,我們需要讓我們的類實(shí)現(xiàn)Serializable接口。

          相關(guān)文章教程分享:java快速入門

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)