1. 序章

この短いチュートリアルでは、Javaの内部インターフェイスについて説明します。 それらは主に次の目的で使用されます。

  • インターフェイスに共通の名前がある場合の名前空間の問題の解決
  • カプセル化の増加
  • 関連するインターフェースを1か所にグループ化することで読みやすさを向上

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

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

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

これらは暗黙的にパブリックで静的であり、別のインターフェイスで宣言された場合はフィールドと同様に(トップレベルインターフェイスでのフィールド宣言と同様)、どこにでも実装できます。

public interface Customer {
    // ...
    interface List {
        // ...
    }
}

別のクラス内で宣言された内部インターフェイスも静的ですが、実装できる場所を制限できるアクセス指定子を持つことができます。

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

上記の例では、リストインターフェイスがあり、顧客のリストに対して、新しい操作の追加、文字列表現の取得、すぐ。

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

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

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

最後に、その実装を続行できます。

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

3. 結論

Javaの内部インターフェースをざっと見てみました。

いつものように、コードサンプルはGitHubにあります。