익명 클래스보단 람다.
자바 8에 와서 추상 메소드 하나짜리 인터페이스는 특별한 의미를 인정 받게 됐다. 함수형 인터페이스로 말이다. 이 함수형 인터페이스는 자바 8에서 람다를 지원하는 초석이 됐다.
Collections.sort(words, (s1, s2) -> Integer.compare(s1.length(), s2.length()))
람다는 기존 익명 구현 객체보다 훨씬 간결하고 가독성도 월등히 높다. 또한 람다를 사용하면 컴파일러가 문맥을 보고 타입을 추론해준다. 따라서 타입을 명시해야만 되는 경우가 아니고서야 굳이 매개변수 타입을 명시할 필요는 없다.
그러나 람다는 이름도 없고 문서화도 하지 못한다. 따라서 코드 자체로 동작이 명확하지 않거나 너무 길어진다면 람다를 포기하는 게 좋다. 또한 람다는 자신을 참조할 수
없다. 람다 내부에서 this는 바깥 인스턴스를 가리킨다. 반대로 익명 구현 객체는 자신을 가리킨다. 상황에 따라 취사 선택하는 현명함을 보이자.