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