理解「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中文網其他相關文章!