Как насчет этого?
Существует только одно объявление класса, которое должно поддерживаться вашей JVM (PermGen), реализующий класс все еще недоступен за пределами SomeClass (я думаю, что это единственное законное намерение написать вложенный класс в любом случае), и последнее, но не менее важное, что вы могли бы также предоставить второй конструктор с InterfaceUpdateListener в качестве аргумента (если это необходимо для большей гибкости и тестируемости). И нет необходимости менять предупреждения.
ожидать
public interface InterfaceUpdateListener {
public void onUpdate();
}
предоставляется, SomeClass может быть реализован так
public class SomeClass {
//InterfaceUpdateListener is an interface
private final InterfaceUpdateListener listener;
private static class SomeClassInterfaceUpdateListener implements InterfaceUpdateListener {
private final SomeClass internal;
public SomeClassInterfaceUpdateListener(final SomeClass aSomeClass) {
internal = aSomeClass;
}
@Override
public void onUpdate() {
internal.someMethod(); //complier complains on this line of code
}
}
public SomeClass() {
listener = new SomeClassInterfaceUpdateListener(this);
}
private void someMethod() {
//do something in here on an update event occuring
}
}