首頁 >Java >java教程 >Java 中「Class.forName()」和「Class.forName().newInstance()」有什麼不同?

Java 中「Class.forName()」和「Class.forName().newInstance()」有什麼不同?

DDD
DDD原創
2024-11-08 17:34:02597瀏覽

What's the difference between

理解「Class.forName()」和「Class.forName().newInstance()」之間的差異:全面解釋

Java 語言提供了多種實例化類別的方法。兩個常用的方法是「Class.forName()」和「Class.forName().newInstance()」。雖然它們有相似之處,但它們的功能之間存在顯著差異。

Class.forName()

「Class.forName()」方法以完全限定的類別名稱作為參數並傳回表示該類別的「Class」物件。該物件提供有關該類別的元數據,包括有關其欄位、方法和建構函數的資訊。然而,它實際上並沒有創建類別的實例。

Class.forName().newInstance()

相反,「Class.forName().newInstance()」。 newInstance()」取得「Class.forName()」傳回的「Class」對象,並嘗試使用預設建構函式建立對應類別的新實例。如果成功,它將傳回對新建立的物件的參考。這兩種方法之間的主要差異在於:「Class.forName()」只傳回一個「Class」對象,而「Class.forName().newInstance()」則建立一個實際實例。

考慮以下Java 程式碼:

執行此程式碼時, "Class.forName("com.example.DemoClass")" 傳回與「DemoClass」類別關聯的“Class”物件。載入:

package com.example;

public class DemoClass {

    public DemoClass() {
        System.out.println("DemoClass instantiated");
    }

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        // Get the Class object
        Class clazz = Class.forName("com.example.DemoClass");

        // Create an instance
        DemoClass instance = (DemoClass) clazz.newInstance();
    }
}

「Class.forName()」的一個關鍵優勢是它能夠在運行時動態載入類別。種情況下,您可以使用「Class.forName()」動態載入該類別並建立實例,而無需對類別名稱進行硬編碼。 >綜上所述,「Class.forName()」和「Class.forName().newInstance()」的差異在於它們的用途。該類別的元資料。

以上是Java 中「Class.forName()」和「Class.forName().newInstance()」有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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