본문 바로가기
우아한테크코스/공부

람다보다는 메서드 참조를 사용하라

by 자바지기 2022. 3. 7.
반응형

람다보다는 메서드 참조를 사용하라

 

람다는 익명 클래스보다 간결하다.

간결한 람다를 더 간결하게 만드는 방법이 메서드 참조이다.

 

메서드 참조를 써야하는 경우 

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]

 

반응형

댓글