Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 인터페이스에 정의할 수 있는 변수와 메서드의 종류

Java 9부터는 인터페이스(interface) 내부에 private 메서드private static 메서드를 추가할 수 있게 되었습니다. 인터페이스에서 private 메서드를 활용하면 default 메서드static 메서드 사이의 코드 중복을 효과적으로 줄일 수 있다는 점이 가장 큰 장점입니다.

예를 들어, 두 개 이상의 default 메서드가 동일한 로직을 공유해야 하는 상황이라면, 해당 코드를 별도의 private 메서드로 분리한 뒤 각 default 메서드에서 호출하는 방식으로 깔끔하게 재사용할 수 있습니다.

Java 9 인터페이스에 정의 가능한 멤버

Java 9에서는 인터페이스에 다음과 같은 변수/메서드를 정의할 수 있습니다.

  • 상수(Constant) — public static final 변수
  • 추상 메서드(Abstract Method)
  • 디폴트 메서드(Default Method)
  • 정적 메서드(Static Method)
  • private 메서드 — Java 9부터 추가
  • private static 메서드 — Java 9부터 추가

예제 코드

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 메서드 — 두 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("짝수 목록:");
        InterfaceTest.printEvenNumbers();
        System.out.println("홀수 목록:");
        InterfaceTest.printOddNumbers();
    }
}

실행 결과

짝수 목록:
10
12
20
16
홀수 목록:
13
5
15
11
25

위 예제에서 getDataStream()이라는 private static 메서드는 짝수 출력 메서드와 홀수 출력 메서드가 데이터 스트림을 얻는 공통 로직을 담당합니다. 이처럼 private 메서드를 사용하면 외부에는 노출하지 않으면서도 인터페이스 내부에서만 코드를 공유할 수 있어 유지보수성이 크게 향상됩니다.