44. 익명 클래스보다는 람다를 사용하라
컴파일러가 타입을 추론할 수 있기에, 람다를 쓸 수 있는 것이다.
타입 추론을 제너릭에서 얻는다
람다는 1 줄 일때 가장 좋고 길어야 3 줄안에 끝내는게 좋다 (가독성)
람다를 쓸수 없는 경우
함수형 인터페이스에서만 쓰이기에, 추상 클래스의 인스턴스를 만들때 람다를 쓸수 없고 익명 클래스를 써야된다
람다를 직렬화 하는 일은 삼가해야 한다
직렬화를 해야되는 객체는 private 정적 중첩 클래스의 인스턴스를 사용한다.
람다 예시
List<String> words = Arrays.asList("aaa","ddd","ccc","eee","bbb","fff","ggg");
// 익명 클래스 사용시 (1.8 버전 이전에선 아래처럼 메서드를 재정의 필요)
Collections.sort(words, new Comparator<String>() {
public int compare(String s1, String s2) {
return Integer.compare(s1.length(), s2.length());
}
});
// 람다 사용시
Collections.sort(words,
(s1, s2) -> Integer.compare(s1.length(), s2.length()));
Collections.sort(words, Comparator.comparingInt(String::length));
words.sort(Comparator.comparingInt(String::length));
// 결과: [aaa, ddd, ccc, eee, bbb, fff, ggg]Last updated