익명 클래스에서 람다와 메서드 참조로
단일 메서드 익명 클래스를 간결한 람다와 메서드 참조로 대체합니다.
코드 비교
✕ Anonymous class
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
save(event);
}
});
✓ Java 8+
button.addActionListener(this::save);
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
더 적은 상용구 코드
클래스 선언과 메서드 재정의에 필요한 형식적인 코드를 제거합니다.
더 나은 가독성
수행되는 작업 자체에 집중할 수 있습니다.
여전히 타입 안전
컴파일러가 대상 함수형 인터페이스의 시그니처를 검사합니다.
이전 방식
익명 클래스
모던 방식
메서드 참조
JDK 버전
8
난이도
초급
JDK 지원
익명 클래스에서 람다와 메서드 참조로
사용 가능
JDK 8 (2014년 3월) 이후 사용 가능.
동작 원리
함수형 인터페이스는 람다 또는 메서드 참조로 구현할 수 있습니다. 정적 타입 검사와 동일한 콜백 계약은 유지하면서 익명 클래스의 상용구 코드를 제거합니다.
관련 문서
증명