在 Java 中依名稱實例化類別
某些情況需要只使用類別的名稱來實例化類別。本指南將探討在 Java 中實現此目的的兩種方法。
方法1:對於具有無參數建構函數的類別
假設該類別擁有無參數建構函數,利用Class.forName() 取得代表該類別的Class 對象。然後,使用 newInstance() 方法建立一個實例。請注意,這種方法通常不被鼓勵,因為它可以規避 Java 的檢查異常。
範例:
Class<?> clazz = Class.forName("java.util.Date"); Object date = clazz.newInstance();
方法2:通用方法
對於具有或不具有無參數構造函數的類,使用更安全的方法,包括從類別對象檢索建構函數對象,並呼叫其newInstance() 方法。
範例:
Class<?> clazz = Class.forName("com.foo.MyClass"); Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class); Object instance = constructor.newInstance("stringparam", 42);
注意:
兩種方法都利用反射,這是一種支援動態檢查的多功能技術類和對象。但是,處理潛在的異常至關重要,包括與類別解析、建構函數可用性以及 Java 虛擬機器或安全管理器施加的安全限制相關的異常。
以上是如何僅按名稱實例化 Java 類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!