所以我通过创建了一个匿名内部类
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/