在Java中建立物件的不同方法是什麼?

Tybyq發表於2018-11-24

在這篇快速文章中,我們將討論在Java中建立物件的五種不同方法。 我們知道,類是建立物件的模板或藍圖。 讓我們列出在Java中建立物件的不同方法。

用Java建立物件的5種不同方法

1.使用新關鍵字

2.使用   newInstance()  Class類的方法

3.使用   newInstance()  Constructor類的方法

4.使用物件反序列化

5.使用物件克隆 -   clone()   方法

使用新關鍵字

這是在Java中建立物件的最流行的方法,我們已在上面討論過;  幾乎每個Java Developer都知道這種方法。

包 網。javaguides。corejava。哎呀 ;

公立 班 學生 {
    私有 字串 名稱 ;
    私人 絃樂 學院 ;

    public  Student(String  name,String  college){
        super();
        這個。name  =  name ;
        這個。大學 =  大學 ;
    }

    public  String  getName(){
        返回 名稱 ;
    }

    public  void  setName(String  name){
        這個。name  =  name ;
    }
    public  String  getCollege(){
        迴歸 大學 ;
    }

    public  void  setCollege(String  college){
        這個。大學 =  大學 ;
    }

    public  static  void  main(String [] args){

        學生 學生 =  新的 學生(“拉梅什”,“BVB”);
        學生 STUDENT2  =  新的 學生(“普拉卡什”,“GEC”);
        學生 學生三 =  新的 學生(“普拉莫德”,“個人所得稅”);
    }
}


從上面的程式碼中,我們 使用 new 關鍵字 建立   Student 物件  

學生 學生 =  新的 學生(“拉梅什”,“BVB”);
學生 STUDENT2  =  新的 學生(“普拉卡什”,“GEC”);
學生 學生三 =  新的 學生(“普拉莫德”,“個人所得稅”);


2.使用類的newInstance()方法

Class.forName()   將動態載入該類,它間接將為您提供“類類”物件。 載入類後,我們將使用該 newInstance() 方法動態建立物件。 讓我們 在這裡 Student 建立一個Java物件

包 網。javaguides。corejava。哎呀 ;

公立 班 學生 {
    private  String  name  =  “Ramesh” ;
    private  String  college  =  “ABC” ;

    公共 學生(){
        super();
    }

    public  Student(String  name,String  college){
        super();
        這個。name  =  name ;
        這個。大學 =  大學 ;
    }

    public  String  getName(){
        返回 名稱 ;
    }

    public  void  setName(String  name){
        這個。name  =  name ;
    }

    public  String  getCollege(){
        迴歸 大學 ;
    }

    public  void  setCollege(String  college){
        這個。大學 =  大學 ;
    }

    public  static  void  main(String [] args){
        嘗試 {

            String  className  =  “net.javaguides.corejava.oops.Student” ;
            class  clasz  =  Class。forName(className);
            學生 學生 =(學生)clasz。newInstance();
            系統。出。的println(學生。的getName());
            系統。出。的println(學生。getCollege());

        } catch(InstantiationException  |  IllegalAccessException  |  ClassNotFoundException  e){
            e。printStackTrace();
        }
    }
}


輸出:

拉梅什
ABC


該   forName()  方法返回與具有給定字串名稱的類或介面關聯的Class物件。

class  clasz  =  Class。forName(className);


newInstance()  方法建立此Class物件表示的類的新例項。

學生 學生 =(學生)clasz。newInstance();
系統。出。println(學生);


3.使用建構函式類的newInstance()方法

Class newInstance()  方法 類似,   類中有一個  方法    ,我們可以用它來建立物件。 我們還可以使用此 方法 呼叫引數化建構函式和私有建構函式   讓我們透過 使用類的  方法    建立 Student 類物件來    演示這種方法   newInstance() java.lang.reflect.Constructor newInstance() newInstance() java.lang.reflect.Constructor

包 網。javaguides。corejava。哎呀 ;

匯入 java。郎。反思。建構函式 ;
匯入 java。郎。反思。InvocationTargetException ;

公立 班 學生 {
    private  String  name  =  “Ramesh” ;
    private  String  college  =  “ABC” ;

    公共 學生(){
        super();
    }

    public  Student(String  name,String  college){
        super();
        這個。name  =  name ;
        這個。大學 =  大學 ;
    }

    public  String  getName(){
        返回 名稱 ;
    }

    public  void  setName(String  name){
        這個。name  =  name ;
    }

    public  String  getCollege(){
        迴歸 大學 ;
    }

    public  void  setCollege(String  college){
        這個。大學 =  大學 ;
    }

    public  static  void  main(String  args []){
        建構函式 <  Student  >  建構函式 ;
        嘗試 {
            constructor  =  學生。上課。getConstructor();
            學生 學生 =  構造。newInstance();
            系統。出。的println(學生。的getName());
            系統。出。的println(學生。getCollege());
        } catch(InstantiationException  |  IllegalAccessException  |  IllegalArgumentException  |  InvocationTargetException  |
            NoSuchMethodException  |  SecurityException  e){
            // TODO自動生成的catch塊
            e。printStackTrace();
        }

    }
}


輸出:

拉梅什
ABC


4.使用物件反序列化

在這種方法中,我們將使用 Java中的 Serializable 介面,它是一個標記介面(沒有主體的方法),用於將Java  學生 物件 s1 序列 化為文字檔案(sample.txt),並使用物件反序列化,我們將閱讀並將其分配給新的 Student 物件 s2

包 網。javaguides。corejava。哎呀 ;

匯入 java。io。可序列化 ;

public  class  Student  實現 Serializable {
 私有 字串 名稱 ;
 私人 絃樂 學院 ;

 公共 學生(){
  super();
 }

 public  Student(String  name,String  college){
  super();
  這個。name  =  name ;
  這個。大學 =  大學 ;
 }

 public  String  getName(){
  返回 名稱 ;
 }

 public  void  setName(String  name){
  這個。name  =  name ;
 }

 public  String  getCollege(){
  迴歸 大學 ;
 }

 public  void  setCollege(String  college){
  這個。大學 =  大學 ;
 }
}


包 網。javaguides。corejava。哎呀 ;

匯入 java。io。FileInputStream ;
匯入 java。io。FileOutputStream ;
匯入 java。io。ObjectInputStream ;
匯入 java。io。ObjectOutputStream ;

公共 課 StudentDemo {
    public  static  void  main(String [] args){
        //儲存Serialized物件的路徑
        String  filePath  =  “sample.txt” ;
        學生 s1  =  新 學生(“Ramesh”,“ABC”);
        嘗試 {
            FileOutputStream  fileOutputStream  =  new  FileOutputStream(filePath);
            ObjectOutputStream  outputStream  =  new  ObjectOutputStream(fileOutputStream);
            outputStream。writeObject(s1);
            outputStream。flush();
            outputStream。close();

            FileInputStream  fileInputStream  =  new  FileInputStream(filePath);
            ObjectInputStream  inputStream  =  new  ObjectInputStream(fileInputStream);
            學生 s2  =(學生)inputStream。readObject();

            inputStream。close();

            系統。出。的println(S2。的getName());
            系統。出。的println(S2。getCollege());
        } catch(Exception  ee){
            ee。printStackTrace();
        }
    }
}


輸出:

拉梅什
ABC


5.使用物件克隆 - clone()方法

clone() 方法用於建立現有物件的副本。 為了實現該    clone()  方法,相應的類應該已經實現了 Cloneable 介面,該介面又是Marker介面。 在這種方法中,我們將為 Student 類“student1”  建立一個物件,   並使用該   clone()  方法將其克隆為“student2”物件:

包 網。javaguides。corejava。哎呀 ;

匯入 java。io。可序列化 ;

public  class  Student  實現 Cloneable {
    私有 字串 名稱 ;
    私人 絃樂 學院 ;

    公共 學生(){
        super();
    }

    public  Student(String  name,String  college){
        super();
        這個。name  =  name ;
        這個。大學 =  大學 ;
    }

    public  String  getName(){
        返回 名稱 ;
    }

    public  void  setName(String  name){
        這個。name  =  name ;
    }

    public  String  getCollege(){
        迴歸 大學 ;
    }

    public  void  setCollege(String  college){
        這個。大學 =  大學 ;
    }

    public  static  void  main(String  args []){
        學生 student1  =  新 學生(“Ramesh”,“ABC”);
        嘗試 {
            學生 2  =(學生)學生1。clone();
            系統。出。的println(STUDENT2。的getName());
            系統。出。的println(STUDENT2。getCollege());
        } catch(CloneNotSupportedException  e){
            e。printStackTrace();
        }
    }
}


輸出:

拉梅什
ABC


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2221517/,如需轉載,請註明出處,否則將追究法律責任。

相關文章