우아한테크코스/공부
람다보다는 메서드 참조를 사용하라
자바지기
2022. 3. 7. 20:14
반응형
람다보다는 메서드 참조를 사용하라
람다는 익명 클래스보다 간결하다.
간결한 람다를 더 간결하게 만드는 방법이 메서드 참조이다.
메서드 참조를 써야하는 경우
1. 대부분의 경우
2. 람다로 구현했을 때 너무 길거나 복잡한 경우
3. 기능을 잘 드러내는 이름을 사용하고 싶을 때
lottoNumbers.stream()
.map(lottoNumber -> new LottoTicket(lottoNumber))
.collect(Collectors.toList())
위와 같은 코드를 메서드 참조로 바꾸면 다음과 같다.
lottoNumbers.stream()
.map(LottoTicket::new)
.collect(Collectors.toList())
위와 같이 메서드 참조를 사용하면 똑같은 결과를 더 보기 좋게 얻을 수 있다.
람다를 써야하는 경우
1. 메서드 참조보다 간결하고 명확할 때
메소드 참조 유형
1. 인스턴스 메소드 참조 - 수신 객체를 특정하는 한정적 인스턴스 메서드 참조
LottoTicket lottoTicket = new LottoTicket();
lottoTicket::getLottoTickets
위와 같이 특정 객체를
2. 인스턴스 메소드 참조 - 수신 객체를 특정하지 않는 비한정적 인스턴스 메서드 참조
List<LottoTicket> tickets;
tickets.stream()
.map(LottoTicket::getNumbers)
3. 정적 참조
Integer::parseInt // str -> Integer.parseInt(str)
4. 클래스 생성자
LottoNumber::new // number -> new LottoNumber(number)
5. 배열 생성자
int[]::new // len -> new int[len]
반응형