2

実装されたインターフェースや他のクラスから不要なメソッドを回避する方法はあるのだろうか。
を実装する単純なクラスがあるとしましょう 。MouseListener実際にはmousePressed( MouseEvent e)、オーバーライドするメソッドが 1 つだけ必要です。ただし、その場合、インターフェイスから他のすべてのメソッドをオーバーライドする必要がありますが、そのように空のままにしておく必要があります。

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 に答える