”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用反射在 Java 中实例化嵌套类?

如何使用反射在 Java 中实例化嵌套类?

发布于2024-11-15
浏览:857

How to Instantiate Nested Classes in Java Using Reflection?

通过反射在 Java 中实例化嵌套类

无法使用标准反射方法实例化所提供的 Java 代码中定义的内部类是Java 开发人员面临的常见陷阱。当尝试直接使用 Class.newInstance() 创建实例时,由于存在表示封闭类实例的隐藏参数而出现问题。

要成功实例化内部类,有必要使用Class.getDeclaredConstructor() 访问构造函数并提供封闭类的实例作为参数。下面的代码片段说明了这种方法:

// 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);

或者,如果嵌套类不依赖于封闭实例,更直接的解决方案是将其声明为静态嵌套类:

public class Mother {
    public static class Child {
        public void doStuff() {
            // ...
        }
    }
}

通过利用这些方法,开发人员可以使用 Java 中的反射有效地实例化依赖和独立内部类。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3