Я пытаюсь протестировать свой код, хотя знание того, что использование рефлексии не является хорошим способом тестирования.У меня есть внешний класс как открытый, имеющий закрытый внутренний класс с открытым методом, как показано ниже:
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)
Как вызвать метод внутреннего класса, принимая параметр, используя отражение?