デフォルトの実装がかなり些細なものであり、そのままの状態が続く可能性が高く、それを拡張するものが何もない場合、またはそうする可能性が低い場合は、これがおそらく進むべき道です。それを独自のファイルに入れたくありません。他にどこに入れますか? クラスをパブリックインスタンスでプライベートにすることをお勧めします(状態がない場合):
/** An interface a lot like java.util.Collection. */
public interface WhatEver {
private class Default implements Whatever {
// Methods...
}
/** A default implementation that is always empty. Suitable as a NULL value. */
public final WhatEver DEFAULT = new Default();
// Rest of interface...
実行に違いはないと思いますが (クラス インスタンスにデータはありません)、より良い Javadoc が得られるでしょう。また、匿名クラスを使用してコード行を節約できます。
他の「デフォルト」インスタンスがいくつか必要になる場合もあります。コレクションのようなインターフェイスの場合、単一のデフォルト エントリ、または同じデフォルト エントリの無限の数 (hasNext
常に を返す) を持つものがあります。true
キーは、デフォルトの実装がインターフェースの外部に依存できないことだと思います。適切なインターフェイスの本体で参照されていない限り、外部のクラスとインターフェイスを使用しないでください。また、デフォルトを拡張する外部のクラスも使用しないでください。インターフェースは、インターフェースの標準的な考え方を少し超えていますが、それでも独立しています。
もう 1 つの重要なポイントは、1 つの .java ファイルにコードを入れすぎないようにすることですが、少なすぎてもいけません。