Мидлет не является абстрактным и не переопределяет абстрактный метод focusLost(com.sun.lwuit.Component)

У меня есть класс LWUIT, который имеет List, сам список содержит метку как элемент.

Моя идея просто сделать действие для списка, когда я сосредоточусь на лейбле.

Я получаю следующую ошибку при компиляции класса:

анонимный мидлет $2 не является абстрактным и не переопределяет абстрактный метод focusLost(com.sun.lwuit.Component) в com.sun.lwuit.events.FocusListener

String s = ("Focus me");
final com.sun.lwuit.Form f  = new com.sun.lwuit.Form();
final com.sun.lwuit.List D  = new com.sun.lwuit.List();
final com.sun.lwuit.Label l = new com.sun.lwuit.Label(s);

D.addItem(l);
f.addComponent(D);

D.addFocusListener(new com.sun.lwuit.events.FocusListener () {

    public void focusGained(com.sun.lwuit.Label l)
    {
    }
    public void focusLost(com.sun.lwuit.Label l)
    {
    }

});

1 ответ

Решение

Все подробности о том, что не так с вашим кодом, содержатся в сообщении об ошибке, вам просто нужно внимательно прочитать его. Посмотрите,

  1. слово anonymous и подписать $ в Midlet$2 сказать что-то не так в анонимном классе.
    В вашем фрагменте кода есть только один такой класс: new com.sun.lwuit.events.FocusListener

  2. does not override abstract method focusLost(com.sun.lwuit.Component) означает, что ваш анонимный класс пропускает определение метода с такой сигнатурой (сигнатура - это имя метода и тип параметров)

  3. Посмотрите внимательнее на методы, которые вы определили в этом анонимном классе, есть ли какой-то метод, на который жалуется компилятор?

  4. На первый взгляд, вы можете подумать, что там есть метод focusLost - но (!) вы должны помнить, что подпись - это не только имя метода, но и тип параметров - и (!) если вы посмотрите поближе, вы обнаружите, что тип параметра не тот, который, как говорят, требуется в сообщении об ошибке,

Ваш анонимный класс имеет метод focusLost(com.sun.lwuit.Label) но сообщение об ошибке говорит, что должен быть метод с другой подписью (другой тип параметра) - focusLost(com.sun.lwuit.Component),

Чтобы исправить эту ошибку компиляции, добавьте в анонимный класс new com.sun.lwuit.events.FocusListener метод с необходимой подписью: focusLost(com.sun.lwuit.Component),

Другие вопросы по тегам