Прежде всего: Eclipse уведомляет , что foo()
никогда не используется локально.Это предупреждение, а не ошибка, однако по причинам, указанным другими anserws.
Обратите внимание, что есть способ достичь foo()
:
new A() {
public void go()
{
System.out.println("reachable - B");
}
public void foo()
{
System.out.println("unreachable - B");
}
}.foo();
Это работает, потому чтотип выражения new A() {}
не A
, а фактически анонимный подкласс A
.И у этого подкласса есть общедоступный метод foo
.
Поскольку вы не можете иметь переменную того же типа, вы не можете получить доступ к foo()
таким образом из переменной.