首頁 >Java >java教程 >如何僅使用 Java 類別的字串名稱來實例化它們?

如何僅使用 Java 類別的字串名稱來實例化它們?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-11 19:08:20172瀏覽

How Can I Instantiate Java Classes Using Only Their String Names?

在Java 中依名稱實例化類別

Java 提供了兩種透過傳遞字串名稱來實例化類別的方法:

1。使用反射與無參構造函數

如果目標類別有無參構造函數,則可以使用 Class.forName() 方法取得 Class 物件。隨後,呼叫newInstance()方法建立實例:

Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();

2.對帶或不帶無參數建構函數的類別使用反射

要獲得適用於帶或不帶無參數建構函數的類別的更全面的方法,請按照以下步驟操作:

  1. 使用Class.forName() 檢索 Class 物件。
  2. 使用 getConstructor() 方法取得建構函式對象,如有必要,指定參數型別。
  3. 透過在建構函式物件上呼叫 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中文網其他相關文章!

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