[아이템 42] 익명 클래스보다는 람다를 사용하라.
자바 8부터는 함수형 프로그래밍을 지원합니다. 추상 메서드가 하나인(Single Abstract Method)인터페이스를 함수형 인터페이스라고 부르며 람다식을 사용해 만들 수 있습니다. 람다는 익명클래스에 비해 코드가 간결하고 가독성이 좋다는 장점이 있습니다.
|
|
|
|
컴파일러가 타입을 추론해주기 때문에 타입을 명시해야 코드가 더 명확해질 때만 제외하고는, 람다의 매개변수 타입은 생략해줍시다. 혹시 컴파일러가 타입을 추론하지 못할경우에 명시해주면 됩니다.
람다 자리에 메서드 참조를 활용하면 코드를 더 간결하게 만들어 줄 수 있습니다.
문법:
클래스이름::메소드이름
또는
참조변수이름::메소드이름
|
|
더 나아가 자바 8 때 List 인터페이스에 추가된 sort 메서드를 이용하면 더욱 짧아집니다.
|
|
람다를 사용해서 코드 자체로 동작이 명확히 설명되지 않거나, 코드가 더 장황해질 경우 람다를 사용하지 말아야 합니다. 람다는 세 줄안에 끝내는 게 좋습니다.람다가 길거나 읽기 불편하면 리팩터링을 시도하길 추천합니다.
람다는 함수형 인터페이스에서만 쓰입니다. 예컨대 인터페이스의 추상메서드가 한 개가 넘어가면 람다를 사용할 수 없습니다. 또 람다는 자신을 참조할 수 없습니다. 람다에서 this
키워드는 바깥 인스턴스를 가리킵니다.