我做了一个例子来从内部类访问私有方法,我每次都没有找到类异常。
class Test {
public static void main(String[] args) throws Exception {
Class<?> clazz = Class.forName("Inner.Private");
Method m = clazz.getDeclaredMethod("foo");
m.setAccessible(true);
m.invoke(new Inner());
}
}
class Inner {
private class Private {
private void foo() {
System.out.println("foo called");
}
}
}// end of Inner
我得到如下例外:
线程“main”中的异常java.lang.ClassNotFoundException: Inner.Private at java.net.URLClassLoader $ 1.run(Unknown Source)
任何帮助都会非常感激。让我知道为什么它忽略了内在阶级或任何洞察力。
答案 0 :(得分:0)
内部类必须在内部外部类。
public class Test {
private class Inner {
private void foo() {
System.out.println("foo called");
}
}
public void test()
throws ClassNotFoundException,
NoSuchMethodException,
IllegalAccessException,
IllegalArgumentException,
InvocationTargetException {
Inner inner = new Inner();
Class<?> clazz = Class.forName("com.oldcurmudgeon.test.Test$Inner");
Method m = clazz.getDeclaredMethod("foo");
m.setAccessible(true);
m.invoke(inner);
}