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

标签 java anonymous-inner-class

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

    obj.addMouseListener(new MouseListener()

但因为它给了我一个错误(它希望我实现至少 4 个方法,名称如 mouseReleased、mouseClicked 等。因为我假设该类没有正确扩展/实现 MouseListener,所以我偶然发现了另一篇 SO 文章( How can an anonymous class use "extends" or "implements"? ) 我了解到匿名内部类总是扩展/实现父类(super class)(对吗?)。所以我继续寻找答案并偶然发现了另一篇与我的问题无关的 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 个问题; 是我刚刚写的/发现的是真的,这是解决我的问题的方法吗 和 如果这是解决方案,还有其他(更清洁的)解决方案吗?

最佳答案

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

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

关于java - 匿名内部类需要覆盖它们现有的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760832/

相关文章:

java - 函数接口(interface)的回调接口(interface)

java - 为什么使用匿名内部类,有哪些替代方案?

c# - 匿名内部类在 Java 中作为键,但在 C# 中呢?

java - 没有 Thread.sleep Webdriver IE 将给出 “unable to find element” 异常

java - 如何在运行 Aeron 示例时设置 Aeron 订阅者和发布者数量限制

java - 某些验证方法遇到问题

java - 获取值(value)的正确方式

java - 在 Eclipse RCP 4.X 中使用默认命令

java - 来自匿名内部类的外部类的关键字

java - 如何从匿名内部类访问非最终变量?