通过反射在 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中文网其他相关文章!