【发布时间】:2019-03-03 00:15:15
【问题描述】:
我正在尝试测试我的代码,尽管知道使用反射不是一种好的测试方式。我有一个公共外部类,有一个私有内部类,其公共方法如下,
public class Outer {
private class Inner {
private int var = 1;
public Inner(int a) {
System.out.println("___");
}
public void test(int a) {
System.out.println("Hey");
}
}
}
我的主要 java 类如下所示
main() {
Outer b = new Outer();
System.out.println(b);
Class<?> innerClass = Class.forName("car.Outer$Inner");
Constructor<?> constructor = innerClass.getDeclaredConstructor(Outer.class, 1);
constructor.setAccessible(true);
Object c = constructor.newInstance(b,b);
Method method = c.getClass().getDeclaredMethod("test");
method.setAccessible(true);
method.invoke(c, 1);
}
这是在扔
线程“main”中的异常 java.lang.NoSuchMethodException: car.Outer$Inner.test() 在 java.lang.Class.getDeclaredMethod(Class.java:2130) 在 car.A.main(A.java:36)
如何使用反射调用内部类方法取参数?
【问题讨论】:
-
你能检查你的方法是否在课堂上吗?
-
仅在课堂内。没有参数的方法也是如此。
-
您需要在对
getDeclaredMethod()的调用中提供参数类。在这种情况下,c.getClass().getDeclaredMethod("test", int.class)应该可以工作。 -
你是救生员。谢谢你:-)
-
今天好像有人问过这样的问题:Java reflection: access private method inside inner class 在这种情况下,OP 更进一步。
标签: java methods reflection