首页 > 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学习者快速成长!