2

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

public void mouseExited( MouseEvent e) {}
public void mouseClicked( MouseEvent e) {}
public void mouseReleased( MouseEvent e) {}
public void mouseEntered( MouseEvent e) {}

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

4

2 回答 2

8

扩展MouseAdapter. 它MouseListener通过对每种方法都不做任何事情来实现。所以你可以覆盖你想要的。

于 2013-01-06T18:03:44.660 回答
1

JB Nizet 的解决方案很好,但顺便问一下,为什么会出现问题?使用像 Eclipse 这样的现代 IDE,您可以一键添加所有要实现的方法(源 > 覆盖/实现方法)。如果您使用适配器,这是实用的,但您不能扩展适配器以外的其他类。

于 2013-01-06T18:09:45.317 回答