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

Java 9에서 익명 내부 클래스에 다이아몬드 연산자를 사용할 수 있을까?

네, Java 9부터는 익명 내부 클래스(anonymous inner class)에서도 다이아몬드 연산자(diamond operator)를 사용할 수 있습니다.

다이아몬드 연산자(<>)를 사용하는 목적은 표현식 오른쪽에서 제네릭 타입을 반복해서 작성하지 않아도 되도록 하여 중복 코드를 줄이고 가독성을 높이는 것입니다. Java 7에서는 다이아몬드 연산자가 일반 클래스에만 적용되었고, 익명 내부 클래스에는 사용할 수 없었습니다. 이때 익명 내부 클래스에 다이아몬드 연산자를 사용하려고 하면 컴파일 오류가 발생했습니다. 그 이유는 당시 컴파일러가 익명 클래스 생성자의 타입을 정확히 추론할 수 없었기 때문입니다.

Java 9에서는 이러한 제한이 해제되어, 추론 가능한 타입이라면 익명 내부 클래스를 생성할 때도 다이아몬드 연산자를 자유롭게 사용할 수 있게 되었습니다.

아래 예제에서는 익명 내부 클래스와 함께 다이아몬드 연산자를 사용하는 방법을 보여줍니다.

예제 코드

import java.util.*;
public class DiamondOperatorTest {
   public static void main(String args[]) {
      String[] str = {"Raja", "Adithya", "Jai", "Chaitanya", "Vamsi"};
      Iterator<String> itr = new Iterator<>() {      // 익명 내부 클래스
         int i = 0;
         public boolean hasNext() {
            return i < str.length;
         }
         public String next() {
            if(!hasNext()) {
               throw new NoSuchElementException();
            }
            return str[i++];
         }
      };
      while(itr.hasNext()) {
         System.out.println(itr.next());
      }
   }
}

실행 결과

Raja
Adithya
Jai
Chaitanya
Vamsi

위 코드에서 볼 수 있듯이 new Iterator<>()처럼 오른쪽에 제네릭 타입을 생략해도 컴파일러가 왼쪽 선언부(Iterator<String>)를 기반으로 타입을 자동으로 추론합니다. 덕분에 코드가 더 간결해지고, 나중에 타입을 변경할 때 한 곳만 수정하면 되므로 유지보수성도 향상됩니다.