[JAVA8] 메소드 레퍼런스

이재훈·2023년 5월 2일
0

JAVA8

목록 보기
2/23

인프런 강의 "더 자바, JAVA8"(백기선님)의 강의를 듣고 정리한 글 입니다.
JAVA8에 추가된 핵심 기능들을 이해하기 쉽게 설명해 주시니 한번씩 들어보시는 것을 추천드립니다.

"더 자바, JAVA8 바로가기"


람다가 하는 일이 기존 메서드 또는 생성자를 호출하는 거라면, 메소드 래퍼런스를 사용해서 매우 간결하게 표현할 수 있다.

메소드 참조하는 방법

설명형식
스태틱 메소드 참조타입::스태틱 메소드
특정 객체의 인스턴스 메소드 참조객체 레퍼런스::인스턴스메소드
임의 객체의 인스턴스 메소드 참조타입::인스턴스 메소드
생성자 참조타입::new
  • 메소드 또는 생성자 매개변수로 람다의 입력값을 받는다.
  • 리턴값 또는 생성한 객체의 람다의 리턴값이다.

예시

public class Greeting {
    
    private String name;
    
    public Greeting() {}
    
    public Greeting(String name) {
        this.name = name;
    }
    
    public String hello(String name) {
        return "hello" + name;
    }
    
    public static String hi(String name) {
        return "hi" + name;
    }
}
public class App {

    public static void main(String[] args) {
    
        Greeting greeting = new Greeting();
        UnaryOperator<String> hello = greeting::hello; // 타입::인스턴스 메소드

        UnaryOperator<String> hi = Greeting::hi; // 타입::스태틱 메소드

        Supplier<Greeting> newGreeting = Greeting::new; // 타입::new

        Function<String, Greeting> createGreeting = Greeting::new; // 타입::new

        String[] names = {"jay", "keesun", "toby"};
        Arrays.sort(names, String::compareToIgnoreCase); // 타입::인스턴스 메소드
    }
}
profile
부족함을 인정하고 노력하자

0개의 댓글