Language 초급

익명 클래스의 다이아몬드 연산자

다이아몬드 연산자가 이제 익명 클래스에서도 작동합니다.

✕ Java 7/8
Map<String, List<String>> map =
    new HashMap<String, List<String>>();
// anonymous class: no diamond
Predicate<String> p =
    new Predicate<String>() {
        public boolean test(String s) {..}
    };
✓ Java 9+
Map<String, List<String>> map =
    new HashMap<>();
// Java 9: diamond with anonymous classes
Predicate<String> p =
    new Predicate<>() {
        public boolean test(String s) {..}
    };
이 코드에 문제가 있나요? 알려주세요.
📏

일관된 규칙

다이아몬드는 생성자와 익명 클래스 어디서든 작동합니다.

🧹

중복 감소

타입 인수를 왼쪽에 한 번만 명시합니다.

🔧

DRY 원칙

컴파일러가 이미 타입을 알고 있는데 왜 두 번 써야 합니까?

이전 방식
타입 인수 반복
모던 방식
다이아몬드 <>
JDK 버전
9
난이도
초급
익명 클래스의 다이아몬드 연산자
사용 가능

익명 클래스의 다이아몬드는 JDK 9 (2017년 9월) 이후 사용 가능.

Java 7에서 <>를 도입했지만 익명 내부 클래스에서는 작동하지 않았습니다. Java 9에서 이를 수정하여 우변에 타입 인수를 반복할 필요가 없습니다.

공유 𝕏 🦋 in