在動態物件建立領域,出現了一個問題:我們如何從給定的類別名稱實例化物件並提供其構造函數的值?
到為了實現這個動態行為,我們利用 Java 反射 API 的強大功能。其核心是 Class 類,它允許我們存取代表特定類別的 Class 物件。這些 Class 物件使我們能夠探索類別的各個方面,包括其建構函數。
要建構具有特定參數值的實例,我們遵循有條不紊的方法:
對於巢狀類,Class 物件的路徑有細微差別。巢狀類別的名稱由外部類別的名稱與美元符號 ($) 連接而成,代表內部類別嵌套在父類別中。
設想一個我們想要的場景建立 mypackage.MyClass 的實例,同時提供值「MyAttributeValue」作為建構子參數。我們的程式碼將優雅地展開如下:
Class<?> clazz = Class.forName("mypackage.MyClass"); Constructor<?> ctor = clazz.getConstructor(String.class); Object object = ctor.newInstance(new Object[] { "MyAttributeValue" });
透過巧妙地使用 Java 反射,我們揭示了動態創建任何類別的實例的機制,同時提供建構函數參數。這種力量打開了無數程式可能性的大門。
以上是如何使用類別名稱和建構函式參數動態實例化 Java 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!