我尝试实例下面的Java代码中定义的内部类:如何在Java中使用反射来实例化内部类?
public class Mother {
public class Child {
public void doStuff() {
// ...
}
}
}
当我试图让孩子的一个实例是这样
我得到这个异常:
java.lang.InstantiationException: com.mycompany.Mother$Child
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
...
我错过了什么?
呃,你的内部类不是静态的......这是故意的吗?可能来自C#背景? ;) – fge
感谢您提出“静态”的想法!事实上,使用静态嵌套类而不是内部类可以让我的生活更轻松。 – Stephan
问题是,如果内部类未声明为静态,则此类的实例取决于外部类的实例的存在;这与C#不同,默认情况下,所有内部类都是“静态”的,并且可以在没有父实例的情况下实例化。 – fge