Javaの内部インタフェースの手引き

1.はじめに

この短いチュートリアルでは、Javaの内部インターフェースに注目します。

それらは主に使用されます:

  • インターフェースに共通の名前がある場合の名前空間の問題の解決

カプセル化の増加

  • 関連するインタフェースを1か所にまとめて読みやすさを向上

よく知られている例は、 Map インターフェース内で宣言されている Entry インターフェースです。このように定義すると、インターフェースはグローバルスコープではなく、 Map.Entry として参照され、他の Entry インターフェースと区別され、 Map との関係が明確になります。

2.内部インターフェース

定義上、内部インタフェースの宣言は別のインタフェースまたはクラスの本体で行われます。

他のインタフェースで宣言された場合、それらは暗黙のうちにpublicかつstaticであり、またそれらのフィールドでもあり(トップレベルインタフェースでのフィールド宣言と同様に)、どこにでも実装できます。

public interface Customer {
   //...
    interface List {
       //...
    }
}
  • 他のクラス内で宣言されている内部インタフェースも静的** です。

public class Customer {
    public interface List {
        void add(Customer customer);
        String getCustomerNames();
    }
   //...
}

上の例では、新しいものを追加する、 String 表現を取得するなど、 Customers のリストでいくつかの操作を宣言するのに役立つ List インターフェースがあります。

List は一般的な名前であり、このインターフェイスを定義する他のライブラリと連携するには、宣言、つまり namespace itを分離する必要があります。

CustomerList. のような新しい名前を付けたくない場合は、ここで内部インターフェースを使用します。

また、カプセル化を改善するために、2つの関連インタフェースをまとめました。

最後に、それの実装を続けることができます。

public class CommaSeparatedCustomers implements Customer.List {
   //...
}

3.まとめ

私たちはJavaの内部インターフェースをちょっと見ました。

いつものように、コードサンプルはhttps://github.com/eugenp/tutorials/tree/master/core-java-lang[over on GitHub]にあります。