자바8 - 메소드 레퍼런스

메소드 레퍼런스

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

메소드 참조하는 방법

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

        // 생성자 참조 
        Supplier<Greeting> newGreeting = Greeting::new;
        // 위의 식을 썼다고 Gretting 객체가 생기는 것이 아니다.
        Greeting greeting2 = newGreeting.get();
        // 위와 같이 get() 함수를 사용해야 Greeting 객체를 만들 수 있다.


        // 생성자 참조
        Function<String, Greeting> hyunsikGreeting = Greeting::new;
        Greeting hyunsik = hyunsikGreeting.apply("hyunsik");

        // 스태틱 메소드 참조
        UnaryOperator<String> hi = Greeting::hi;
        String hiHyunsik = hi.apply("hyunsik");

        // 특정 객체의 인스턴스 메소드 참조
        Greeting greeting = new Greeting();
        UnaryOperator<String> hello = greeting::hello;
        String hi2Hyunsik = hello.apply("hyunsik");

        // 임의 객체(불특성 다수)의 인스턴스 메소드 참조
        String[] names = {"hyunsik", "aaa", "bbb"};
        Arrays.sort(names, String::compareToIgnoreCase);
        System.out.println(Arrays.toString(names));

좋은 웹페이지 즐겨찾기