반응형
람다보다는 메서드 참조를 사용하라
람다는 익명 클래스보다 간결하다.
간결한 람다를 더 간결하게 만드는 방법이 메서드 참조이다.
메서드 참조를 써야하는 경우
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]
반응형
'우아한테크코스 > 공부' 카테고리의 다른 글
상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라 (0) | 2022.03.15 |
---|---|
스트림 병렬화는 주의해서 적용하라 (0) | 2022.03.12 |
equals는 일반 규약을 지켜 재정의하라 (0) | 2022.03.02 |
값 객체(VO) (0) | 2022.02.20 |
[자동차 경주 미션] 전략 패턴 사용 후기 (0) | 2022.02.18 |
댓글