[java] 람다 표현식과 익명 클래스의 차이점은 무엇인가요?
1. 코드의 간결함
- 람다 표현식: 람다 표현식을 사용하면 코드가 훨씬 간결해집니다. 메서드의 매개변수 타입이나 반환 타입을 명시하지 않아도 되며, 중괄호와 return 문도 생략할 수 있습니다.
- 익명 클래스: 익명 클래스는 상대적으로 더 많은 코드를 필요로 합니다. 매번 새로운 클래스를 정의해야 하기 때문에 작성해야 할 코드 양이 많아집니다.
2. 캡처 변수
- 람다 표현식: 람다식 내에서는 외부의 변수를 수정할 수 없습니다. 이때 변수는 final 또는 effectively final 이어야 합니다.
- 익명 클래스: 익명 클래스는 외부 변수에 접근하고 수정할 수 있습니다.
3. 메서드 구현
- 람다 표현식: 함수형 인터페이스(Functional Interface)의 구현을 간단히 할 수 있습니다.
- 익명 클래스: 여러 메서드를 구현해야 할 때 유용합니다.
보통은 람다 표현식이 코드를 간결하고 가독성 있게 만들어주므로, 가능하다면 람다 표현식을 사용하는 편이 좋습니다. 하지만 외부 변수를 수정해야 하는 경우에는 익명 클래스를 사용해야 합니다.