Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のインターフェースで定義できる変数・メソッドの種類とは?

Java 9以降、インターフェースの中にprivateメソッドおよびprivate staticメソッドを定義できるようになりました。インターフェースでprivateメソッドを活用する最大のメリットは、defaultメソッドstaticメソッド間におけるコードの重複を削減できる点です。

たとえば、2つ以上のdefaultメソッドが同じ共通処理を必要としている場合、その処理をprivateメソッドとして切り出し、それぞれのdefaultメソッドから呼び出すことで、コードの保守性と可読性を高めることができます。

Java 9のインターフェースで定義できる要素一覧

Java 9では、インターフェース内に以下の6種類の変数・メソッドを定義することが可能です。

  • 定数
  • 抽象メソッド
  • デフォルトメソッド
  • staticメソッド
  • privateメソッド
  • private staticメソッド

サンプルコード

次の例では、private staticメソッドを使ってデータストリームの生成処理を共通化し、2つのstaticメソッドから呼び出しています。

import java.util.*;
import java.util.stream.*;

interface InterfaceTest {
    static void printEvenNumbers() {
        getDataStream().filter(i -> i % 2 == 0).forEach(System.out::println);
    }
    static void printOddNumbers() {
        getDataStream().filter(i -> i % 2 != 0).forEach(System.out::println);
    }
    // private staticメソッド:共通処理をここに集約
    private static Stream<Integer> getDataStream() {
        List<Integer> list = Arrays.asList(10, 13, 5, 15, 12, 20, 11, 25, 16);
        return list.stream();
    }
}

public class InterfacePrivateMethodTest implements InterfaceTest {
    public static void main(String args[]) {
        System.out.println("The even numbers: ");
        InterfaceTest.printEvenNumbers();
        System.out.println("The odd numbers: ");
        InterfaceTest.printOddNumbers();
    }
}

実行結果

The even numbers:
10
12
20
16
The odd numbers:
13
5
15
11
25

ポイントまとめ

  • privateメソッドはインターフェース内部でのみ使用でき、実装クラスからは呼び出せません。
  • private staticメソッドはstaticメソッドやdefaultメソッドの両方から利用できます。
  • 共通ロジックをprivateメソッドに集約することで、重複コードを排除し、変更時の修正箇所を1か所に抑えられます。
  1. JavaのFocusListenerインターフェースとは?重要性と実装方法を解説

    FocusListenerインターフェースとはJava AWT/SwingにおけるFocusListenerは、コンポーネントがキーボードフォーカスを取得・喪失したタイミングで発生するイベントを受け取るためのリスナーインターフェースです。ユーザーがどのコンポーネントを操作しているのかを検知できるため、入力フォームのバリデーションやガイド表示など、対話的なUIを実現するうえで重要な役割を担います。フォーカスイベントは、コンポーネントがキーボードフォーカスを取得または喪失したときに生成されます。フォーカスイベントを表すオブジェクトは、FocusEventクラスから作成されます。FocusEvent

  2. Java 8のインターフェースで使える静的メソッドの基本と実践例

    Java 8におけるインターフェースの静的メソッドとはJava 8以降、インターフェースには静的メソッド(staticメソッド)を定義できるようになりました。これにより、ユーティリティ的なヘルパーメソッドをインターフェース内に直接記述でき、関連する処理をひとまとめに管理しやすくなります。静的メソッドは「インターフェース名.メソッド名()」の形式で呼び出すのが基本です。実装クラスのインスタンスからは直接呼び出せず、オーバーライドもできない点に注意しましょう。静的メソッドを持つインターフェースの定義例次の例では、Vehicleインターフェースにデフォルトメソッド print() と、静的メソッド