避免覆盖Java中的所有抽象方法

Kam*_*nek 2 java abstract-class overriding

我想知道是否有任何方法可以避免实现接口或其他类的不必要的方法.
假设我有简单的类实现 MouseListener,实际上我只需要一个方法mousePressed( MouseEvent e)来覆盖.但是,在这种情况下,我还必须覆盖接口中的所有其他方法,但保持它们为空:

public void mouseExited( MouseEvent e) {}
public void mouseClicked( MouseEvent e) {}
public void mouseReleased( MouseEvent e) {}
public void mouseEntered( MouseEvent e) {}
Run Code Online (Sandbox Code Playgroud)

是否有任何棘手的解决方案只覆盖我真正需要的方法,即使其他人在接口/超类中是抽象的并仍然保持我的类是非抽象的?

JB *_*zet 8

扩展MouseAdapter.它MouseListener通过对每个方法无所作为来实现.所以你可以覆盖你想要的那个.

  • 如果需要扩展MouseAdapter以外的类并实现几个接口,那么MouseListener可能会尝试做太多.请记住,您可以为其提供一个带有引用参数的构造函数,因此它与其他对象具有has-a关系. (3认同)