首頁 >Java >Java基礎 >java中創建物件的方法有幾種

java中創建物件的方法有幾種

王林
王林原創
2019-11-30 11:45:292889瀏覽

java中創建物件的方法有幾種

一、使用new關鍵字

#這是我們最常見的也是最簡單的建立物件的方式,透過這種方式我們也可以呼叫任意的構造函數(無參的和有參的)。

例如:

User user = new User();

二、使用反射機制

使用反射手段,呼叫Java.lang.Classjava.lang.reflect.Constructor類別的newInstance()實例方法。

相關影片教學分享:java教學影片

1、使用Class類的newInstance方法

#可以使用Class類的newInstance方法建立物件。這個newInstance方法呼叫無參的建構子建立物件。

//创建方法1
User user = (User)Class.forName("根路径.User").newInstance(); 
//创建方法2(用这个最好)
User user = User.class.newInstance();

2、使用Constructor類別的newInstance方法

和Class類別的newInstance方法很像,java.lang.reflect.Constructor類別裡也有一個newInstance方法可以創建物件。我們可以透過這個newInstance方法來呼叫有參數的和私有的建構子。

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

這兩種newInstance方法就是大家所說的反射。事實上Class的newInstance方法內部呼叫Constructor的newInstance方法。

三、使用clone方法

無論何時我們呼叫一個物件的clone方法,jvm就會建立一個新的對象,將前面對象的內容全部拷貝進去。用clone方法建立物件並不會呼叫任何建構函式。

要使用clone方法,我們需要先實作Cloneable介面並實作其定義的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();
        }
    }

執行:

newclone:wangql
copyClone:wangql

四、使用反序列化

當我們序列化和反序列化一個對象,jvm會為我們建立一個單獨的對象。在反序列化時,jvm建立物件並不會呼叫任何建構子。

為了反序列化一個對象,我們需要讓我們的類別實作Serializable介面。

相關文章教學分享:java快速入門

#

以上是java中創建物件的方法有幾種的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn