【问题标题】:Anonymous Inner Classes need to override their existing methods?匿名内部类需要重写它们现有的方法吗?
【发布时间】:2015-02-27 08:47:47
【问题描述】:

所以我通过

创建了一个匿名内部类
    obj.addMouseListener(new MouseListener()

但是因为它给了我一个错误(它希望我实现至少 4 个名称为 mouseReleased、mouseClicked 等的方法。当我假设该类没有正确扩展/实现 MouseListener 时,我偶然发现了另一篇 SO 文章(How can an anonymous class use "extends" or "implements"?) 我知道匿名内部类总是扩展/实现一个超类(对吗?)。所以我继续寻找答案并偶然发现了另一篇与我的问题无关的 SO 文章 (I'm having trouble choosing when to use a MouseListener object) ,但是我看到线程的所有者写了这几行代码

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

这是我一直想念的吗?我已经尝试过一次@override 整个班级,但这只是给了我另一个错误。我可以看到这将如何解决问题,但对我来说它看起来很混乱。

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

【问题讨论】:

    标签: java anonymous-inner-class


    【解决方案1】:

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

    如果您只想为 一些 方法提供实现,则应改为扩展 MouseAdapter - 它提供无操作实现,因此您可以覆盖您想要的那些。

    【讨论】:

    • 这正是我所说的更清洁的解决方案。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多