Lambda 식이란?
함수적 프로그래밍 형태로 재사용 가능한 코드 블록
기존의 anonymous inner class를 이용한 처리 방식을 간결하게 처리
//anonymous inner class
Arrays.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2){
return o1.compareTo(o2);
}
}
//lambda 방식
Arrays.sort(nums, (o1,o2) -> {return o1.compareTo(o2);});
//한 줄일 경우 {}와 return ; 제거 가능
Arrays.sort(nums, (o1,o2) -> o1.compareTo(o2));
또한 인자 부분은 파라미터가 1개일 때만 () 생략가능
() -> {} // 인자가 없을 때
(a) -> {} // 인자가 1개만 있을 때
a -> {}
(x,y) -> {} // 인자가 2개 이상
(a1,o2,j3) -> {}
람다 블록 안에서의 변수 참조
외부 클래스의 멤버변수 : 접근제한자의 제약 없이 참조 가능
외부 클래스의 local 변수 : final 키워드가 추가된 것으로 동작 == read only
:: 키워드(메서드 참조)
람다 실행문 내부에서 다른 함수 하나만을 실행하는 경우 :: 연산자를 이용해 기존 메서드 참조
<소유자>::<파라미터를 사용하는 소유자의 메서드>
생성자 참조도 가능하다
() -> new StringBuffer;
StringBuffer::new;
다만, 메서드 참조는 instance method인지 static method인지 구분하기 어려워질 수 있다. 적당한 선에서 가독성을 고려해 작성하면 충분하다
'JAVA' 카테고리의 다른 글
[Java] String에 대한 고찰 - UTF와 char (0) | 2024.01.24 |
---|---|
[Java] Interface (0) | 2024.01.19 |
[Java] Abstract : 추상 클래스 (0) | 2024.01.19 |
[Java] 자주 Override하는 함수들 : Object (0) | 2024.01.18 |
[Java] Polymorphism (0) | 2024.01.18 |