我尝试实例化在以下Java代码中定义的内部类:
public class Mother {
public class Child {
public void doStuff() {
// ...
}
}
}
当我尝试像这样获取Child的实例时
Class<?> clazz= Class.forName("com.mycompany.Mother$Child");
Child c = clazz.newInstance();
我得到了这个例外:
java.lang.InstantiationException: com.mycompany.Mother$Child
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
...
我错过了什么?
发布于 2017-06-17 14:29:33
这段代码创建内部类实例。
Class childClass = Child.class;
String motherClassName = childClass.getCanonicalName().subSequence(0, childClass.getCanonicalName().length() - childClass.getSimpleName().length() - 1).toString();
Class motherClassType = Class.forName(motherClassName) ;
Mother mother = motherClassType.newInstance()
Child child = childClass.getConstructor(new Class[]{motherClassType}).newInstance(new Object[]{mother});
https://stackoverflow.com/questions/17485297
复制相似问题