Анонимные внутренние классы должны переопределять свои существующие методы?

Итак, я создал анонимный внутренний класс через

    obj.addMouseListener(new MouseListener()

но потому что это дало мне ошибку (он хотел, чтобы я реализовал как минимум 4 метода с именами, такими как mouseReleased, mouseClicked и т. д. Поскольку я предположил, что класс неправильно расширяет/реализует MouseListener, я наткнулся на другую статью SO (Как анонимный класс может использовать расширения или реализации?), где Я понял, что анонимные внутренние классы всегда расширяют/реализуют суперкласс (верно?), Поэтому я продолжил поиск ответа и наткнулся на другую статью SO (У меня возникли проблемы с выбором времени использования объекта MouseListener), что на самом деле не связано с моей проблемой, но я видел, как владелец треда написал эти строчки кода

    @Override public void mouseExited(MouseEvent e) {}
    @Override public void mouseEntered(MouseEvent e) {}
    @Override public void mouseReleased(MouseEvent e) {}
    @Override public void mousePressed(MouseEvent e) {}

Это то, чего мне не хватало? Я уже пытался @переопределить весь класс сразу, но это выдало мне еще одну ошибку. Я вижу, как это решит проблему, но мне это кажется очень грязным.

В основном это сводится к 2 вопросам; правда ли то, что я только что написал / обнаружил, и это способ решить мою проблему, и если это решение, есть ли другое (более чистое) решение?


person Ciphra    schedule 27.02.2015    source источник


Ответы (1)


MouseListener — это интерфейс. не имеет никаких реализаций методов, поэтому, если вы собираетесь использовать его в качестве основы для своего анонимного внутреннего класса, вам нужно предоставить реализации для всего.

Если вы просто хотите предоставить реализации для некоторых методов, вам следует расширить MouseAdapter вместо этого - это обеспечивает неактивные реализации, поэтому вы можете просто переопределить те, которые вам нужны.

person Jon Skeet    schedule 27.02.2015
comment
это было именно то, что я имел в виду с более чистым решением. Спасибо за помощь! - person Ciphra; 27.02.2015