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]にあります。