匿名内部类需要覆盖它们现有的方法



所以我通过创建了一个匿名的内部类

    obj.addMouseListener(new MouseListener()

但因为它给了我一个错误(它希望我实现至少4个名称为mouseRelease、mouseClicked等的方法)。由于我认为该类没有正确地扩展/实现MouseListener,我偶然发现了另一篇SO文章(匿名类如何使用"extends"或"implements"?),其中我理解匿名内部类总是扩展/实现超类(对吧?)。因此,我继续寻找答案,偶然发现了另一篇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) {}

这就是我一直缺少的吗?我已经尝试过一次覆盖整个类,但这又给了我一个错误。我可以看到这将如何解决问题,但对我来说,这看起来非常混乱

它基本上可以归结为两个问题;是我刚刚写的/发现的,这是解决我问题的方法吗和如果这是解决方案,还有其他(更清洁的)解决方案吗?

MouseListener是一个接口,它没有任何方法实现,所以如果要将其用作匿名内部类的基础,则需要为所有内容提供实现。

如果您只想为某些方法提供实现,那么您应该扩展MouseAdapter——它不提供任何操作实现,因此您可以覆盖所需的实现。

最新更新