【发布时间】:2020-03-01 17:05:34
【问题描述】:
我需要从每个静态定义的内部类创建实例,但我得到 java.lang.ClassNotFoundException。
首先,我收集声明的内部类:
public String[] getInnerClassNames(Class<?> p_class) {
Class<?>[] declaredClasses = p_class.getDeclaredClasses();
String[] innerClassNames = new String[declaredClasses.length];
for (int i = 0; i < declaredClasses.length; i++) {
innerClassNames[i] = declaredClasses[i].getCanonicalName();
}
return innerClassNames;
}
p_class 是外部类。
其次,我为给定的内部类名进行类加载和实例化:
public Object createObjectByClassName(String p_className)
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
Class<?> clazz = Class.forName(p_className);
return clazz.newInstance();
}
此内部类名称的格式为:PACKAGE.OUTER_CLASS_NAME.INNER_CLASS_NAME。
我在这里缺少什么?
【问题讨论】:
-
@Oleg 我认为这回答了明显的后续问题而不是原始问题。
-
@TomHawtin-tackline 好的,撤回。
标签: java instance inner-classes