Lambda 식이란?
String [] strs = {"Tim", "Irove", "Jane", "Woo"};
System.out.println(Arrays.toString(strs));
Arrays.sort(strs);
System.out.println(Arrays.toString(strs));
// 결과
[Tim, Irove, Jane, Woo]
[Irove, Jane, Tim, Woo]
- 함수적 프로그래밍의 형태로 재사용 가능한 코드 블록
- 기존의 anonymous inner class르 이용한 처리 방식을 간결하게 처리
public void sortByAnnonymous() {
Arrays.sort(langs,
new Comparator<String>(){
public int compare(String o1, String o2){
return o1.compare(o2);}});
public void sortBylambda(){
Arrays.sort(langs, (o1,o2)->{return o2.compareTo(o1);});}
타겟 타입과 @FunctionalInterface
- lambda 식이 할당되는 인터페이스를 Lambda 식의 타겟 타입이라고 함
- 타겟 타입은 interface로 반드시 하나의 abstract method 만 존재
- @FunctionalInterface
- 컴파일러가 하나의 abstract method 만 있음을 체크
- abstract method가 2개 이상 존재하는 경우는 익명의 inner class 사용