我做了一個例子來訪問內部類的私有方法,我每次都沒有發現類異常。私人內部類訪問方法
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
我得到如下異常:在線程
異常 「主要」 拋出java.lang.ClassNotFoundException: 在java.net.URLClassLoader的$ 1.run(來源不明)Inner.Private
任何幫助將非常感激。讓我知道爲什麼它忽略了一個內部類或任何見解。
Make Test a public class。 – theVoid
它是'Inner $ Private'。 – Savior
除了@Pillar之外,'m.invoke(new Inner());'將不起作用,因爲你正在給Inner.Private的一個方法提供Inner實例。 – Tunaki