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

Java 9에서 익명 클래스와 함께 다이아몬드 연산자(<>) 사용하는 방법

다이아몬드 연산자(diamond operator, <>)Java 7에서 코드의 가독성을 높이기 위해 도입되었습니다. 하지만 초기 버전에서는 익명 내부 클래스(anonymous inner class)에는 사용할 수 없었다는 제한이 있었습니다.

Java 9부터는 이러한 제한이 해소되어, 다이아몬드 연산자를 익명 내부 클래스와 함께 사용할 수 있게 되었습니다. 이를 통해 제네릭 타입을 중복으로 명시할 필요가 없어지고 코드가 훨씬 간결해집니다.

사용 예제

아래 예제는 Java 9에서 익명 클래스에 다이아몬드 연산자를 적용하는 방법을 보여줍니다. 세 가지 타입 인자(Integer, 와일드카드 extends Number, 비한정 와일드카드 ?)를 사용하는 경우를 모두 확인할 수 있습니다.

public class DiamondOperatorTest {
    public static void main(String args[]) {
        Handler<Integer> intHandler = new Handler<>(1) {
            @Override
            public void handle() {
                System.out.println(data);
            }
        };
        intHandler.handle();

        Handler<? extends Number> intHandler1 = new Handler<>(2) {
            @Override
            public void handle() {
                System.out.println(data);
            }
        };
        intHandler1.handle();

        Handler<?> handler = new Handler<>("test") {
            @Override
            public void handle() {
                System.out.println(data);
            }
        };
        handler.handle();
    }
}

abstract class Handler<T> {
    public T data;
    public Handler(T data) {
        this.data = data;
    }
    abstract void handle();
}

실행 결과

1
2
test

핵심 정리

  • Java 7에서 도입된 다이아몬드 연산자는 원래 일반 객체 생성 시에만 사용 가능했습니다.
  • Java 9(JEP 213)부터 익명 내부 클래스에서도 다이아몬드 연산자를 사용할 수 있습니다.
  • 단, 컴파일러가 추론 가능한 타입이어야 하며, 익명 클래스가 새로운 타입 인자를 추가로 선언하는 경우에는 적용되지 않습니다.