1. 概要

Java 9から、Javaのインターフェースにプライベートメソッドを追加できます。 この短いチュートリアルでは、これらのメソッドとその利点を定義する方法について説明します。

2. インターフェイスでのプライベートメソッドの定義

プライベートメソッドは静的または非静的に実装できます。これは、インターフェイスでデフォルト静的の両方からコードをカプセル化するプライベートメソッドを作成できることを意味します。パブリックメソッドのシグネチャ。

まず、デフォルトのインターフェイスメソッドからプライベートメソッドを使用する方法を見てみましょう。

public interface Foo {

    default void bar() {
        System.out.print("Hello");
        baz();
    }

    private void baz() {
        System.out.println(" world!");
    }
}

bar()は、デフォルトのメソッドから呼び出すことにより、プライベートメソッド baz()を利用できます。

次に、静的に定義されたプライベートメソッドをFooインターフェイスに追加しましょう。

public interface Foo {

    static void buzz() {
        System.out.print("Hello");
        staticBaz();
    }

    private static void staticBaz() {
        System.out.println(" static world!");
    }
}

インターフェイス内で、他の静的に定義されたメソッドは、これらのプライベート静的メソッドを利用できます。

最後に、具象クラスから定義済みのデフォルトメソッドと静的メソッドを呼び出しましょう。

public class CustomFoo implements Foo {

    public static void main(String... args) {
        Foo customFoo = new CustomFoo();
        customFoo.bar();
        Foo.buzz();
    }
}

出力は文字列「Helloworld!」です。 bar()メソッドの呼び出しと「Hellostaticworld!」から buzz()メソッドの呼び出しから。

3. インターフェイスでのプライベートメソッドの利点

プライベートメソッドを定義したので、それらの利点について話しましょう。

前のセクションで触れたように、インターフェイスはプライベートメソッドを使用して、インターフェイスを実装するクラスから実装の詳細を隠すことができます。 結果として、これらをインターフェースに含めることの主な利点の1つは、カプセル化です。

もう1つの利点は、(一般的なプライベートメソッドと同様に)重複が少なく、同様の機能を持つメソッドのインターフェイスに追加される再利用可能なコードが多いことです。

4. 結論

このチュートリアルでは、インターフェイス内でプライベートメソッドを定義する方法と、静的コンテキストと非静的コンテキストの両方からそれらを使用する方法について説明しました。 この記事で使用したコードは、GitHubにあります。