私のプロジェクトで使用しているライブラリがあります。このライブラリは約15のメソッドを持つインタフェースを持っています。リスナーを表すインターフェイスのメソッドにデフォルトの実装を追加することはできますか?
このインターフェースの目的は、ライブラリーで生成されたいくつかのイベントをサブスクライブできるようにすることです。アプリケーションのリスナー・クラスは、このインタフェースを実装し、イベントを受け取るためにリスナーとして自身をリスナーとして登録できます。
このインターフェイスのすべてのメソッドは、実際にはイベントです。インターフェイスの多くのイベントから1つまたは2つのイベントのみを受信する必要があるリスナーが存在する可能性があります。リスナーは少数のイベントにのみ関心があるとしても、インターフェースを拡張するときにはすべてのメソッドを実装する必要があります。
私はこのライブラリの開発者に、インターフェイスのメソッドに空のデフォルトの実装を追加するよう依頼しました。
しかし、ライブラリの開発者は、デフォルトの実装を追加することを拒否し、Javaのベストプラクティスに違反し、インターフェイスメソッドのデフォルトの実装をインターフェイスの目的に反して使用すると述べています。
しかし、私が理解できるように、このインターフェイスのメソッドは、このインターフェイスの実装者ができるべきアクションを指定していません。このインタフェースのメソッドは、実装者が興味を持っている可能性のあるイベントを定義します。したがって、デフォルトの実装を追加しないという明確な理由はわかりません。
したがって、このインターフェイスにデフォルトの実装を追加して、Javaのベストプラクティスを破っていますか?
インターフェイスを実装したいですか?それもコンパイルされません。私はあなたの質問を理解していない限り。 – Manu
java 8では、インターフェイスメソッドのデフォルト実装を指定することができます。これにより、インターフェイスの実装者がメソッドを実装するためのオプションとなります。 –
それを知らなかった。下位互換性のためにこの機能が提供されているようですが、インターフェイスの代わりに抽象クラスを使用するだけです。 (あなたは図書館員がいなくても、それを自分で作ってください) – Manu