У меня есть класс с локальным внутренним классом в одном из его методов:
public class Outer {
String hello = "hello";
public void myMethod() {
class Inner {
public void myInnerMethod() {
System.out.println(hello);
}
}
[...really slow routine...]
(new Inner()).myInnerMethod();
}
}
Я бы хотел проверить myInnerMethod()
. Поэтому я создаю экземпляр локального внутреннего класса с помощью отражения и вызываю myInnerMethod()
для него.
public void test() {
Object inner = Class.forName("Outer$Inner").newInstance();
inner.getClass().getDeclaredMethod("myInnerMethod").invoke(inner); // hello will be null
}
Но когда myInnerMethod()
получает доступ к hello
, который находится в области действия класса Outer, это null
.
Есть ли способ издеваться или иным образом передать привет myInnerMethod()
?
Я знаю, что мог бы реорганизовать свой код, извлекая внутренний класс или просто проверяя открытые методы Outer. Но есть ли еще способ сделать это?