У меня есть класс PersonStoryDerivedTest, который имеет внутренний класс InnerClass, который имеет в нем функцию foo.вызов метода внутреннего класса с использованием внешнего экземпляра класса
Если у меня есть только экземпляр объекта PersonStoryDerivedTest, и у меня нет имени класса/конструктора/методов ... и я хочу вызвать foo (я знаю, что это второй метод в внутреннем классе hte). как мне это сделать?
public class PersonStoryDerivedTest extends PersonStoryTest {
private void thePersonRests(Integer hours) {
person.rest(hours);
}
public void ff(String g){
System.out.println("Alex");
}
public class InnerClass extends PersonStoryTest {
public void aPerson(Integer age) {
person = new Person(age);
}
public void foo(String g){
System.out.println("David");
}
}
}
public class test {
public static void main(String[] args) {
PersonStoryDerivedTest a = new PersonStoryDerivedTest();
Method[] g1 = a.getClass().getDeclaredMethods();
g1[1].invoke(a,"fff"); // print Alex (works well)
PersonStoryDerivedTest.InnerClass ab = a.new InnerClass();
Class<?>[] b = a.getClass().getDeclaredClasses();
Method[] g = b[0].getDeclaredMethods();
g[1].invoke(ab,"fff"); // print David (works well)
g[1].invoke(b[0] ,"fff"); // (does not work... how can I create the appropriate instance needed by only having b[0])
}
}
Thnx
возможно дубликат [Как проверить класс, который имеет частные методы, поле или внутренние классы] (HTTP : //stackoverflow.com/questions/34571/how-to-test-a-class-that-has-private-methods-fields-or-inner-classes) – jruizaranguren