首頁 > Java > java教程 > 主體

如何使用反射在 Java 中實例化巢狀類別?

DDD
發布: 2024-10-27 03:03:30
原創
151 人瀏覽過

How to Instantiate Nested Classes in Java Using Reflection?

透過反射在Java 中實例化巢狀類別

無法使用標準反射方法實例化所提供的Java 程式碼中定義的內部類別是Java 開發人員面臨的常見陷阱。當嘗試直接使用 Class.newInstance() 建立實例時,由於存在表示封閉類別實例的隱藏參數而出現問題。

要成功實例化內部類,有必要使用Class.getDeclaredConstructor() 存取建構子並提供封閉類別的實例作為參數。以下程式碼片段說明了這種方法:

<code class="java">// Exceptions omitted for brevity
Class<?> enclosingClass = Class.forName("com.mycompany.Mother");
Object enclosingInstance = enclosingClass.newInstance();

Class<?> innerClass = Class.forName("com.mycompany.Mother$Child");
Constructor<?> ctor = innerClass.getDeclaredConstructor(enclosingClass);

Object innerInstance = ctor.newInstance(enclosingInstance);</code>
登入後複製

或者,如果巢狀類別不依賴封閉實例,則更直接的解決方案是將其聲明為靜態巢狀類別:

<code class="java">public class Mother {
    public static class Child {
        public void doStuff() {
            // ...
        }
    }
}</code>
登入後複製

透過利用這些方法,開發人員可以使用Java 中的反射有效地實例化依賴和獨立內部類別。

以上是如何使用反射在 Java 中實例化巢狀類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!