Есть абстрактный класс, который имеет метод public void SomeMethod() {}
Как при объявлении объекта класса вызвать этот метод из переопределенного?
private static void AbstrClassInit() {
Dialog abstrClass = null; // Если тут final, то (1), если нет (2)
abstrClass = new AbstrClass() { //(1) Cannot assign a value to final variable
@Override
public void EscapeAction() {
abstrClass.SomeMethod(); //(2) Variable 'abstrClass' is accesed from within inner class, needs to be declared final
};
}
Ответ
Вы изначально инициализируете переменную значением null после этого, если он финальная, её нельзя переинициализировать. Таким образом вам надо сразу инициализировать переменную экземпляром класса и сделать её финальной для доступа из внутреннего класса.
При этом вы вообще пытаетесь при определении класса вызвать метод его экземпляра... Это вы что-то не то делаете. Вам надо просто вызвать метод через this, коий и является ссылкой на экземпляр вашего класса.
private static void AbstrClassInit() {
final Dialog abstrClass = new AbstrClass() {
@Override
public void EscapeAction() {
this.SomeMethod();
};
}
Комментариев нет:
Отправить комментарий