-
메소드 래퍼런스백기선(인프런 강의)/더 자바, Java 8 2020. 7. 7. 23:47반응형
람다가 하는 일이 기존 메소드 또는 생성자를 호출하는 거라면, 메소드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다.
메소드 참조하는 방법
스태틱 메소드 참조
타입::스태틱 메소드
특정 객체의 인스턴스 메소드 참조
객체 레퍼런스::인스턴스 메소드
임의 객체의 인스턴스 메소드 참조
타입::인스턴스 메소드
생성자 참조
타입::new
- 메소드 또는 생성자의 매개변수로 람다의 입력값을 받는다.
- 리턴값 또는 생성한 객체는 람다의 리턴값이다.
참고
예제
import java.util.Arrays; import java.util.function.Function; import java.util.function.Supplier; import java.util.function.UnaryOperator; public class App { public static void main(String[] args) { // Greeting의 함수를 사용 UnaryOperator<String> hi = (s) -> "hi "; UnaryOperator<String> hi2 = Greeting::hi; System.out.println(hi.apply("하이1")); System.out.println(hi2.apply("하이2")); Greeting greting = new Greeting(); // hello 참조 UnaryOperator<String> hello = greting::hello; System.out.println(hello.apply("헬로ㄸ@")); // 파라미터 있는 생성자 Function<String, Greeting> jinSeokGreeting = Greeting::new; Greeting jinSeok = jinSeokGreeting.apply("JinSeok"); System.out.println(jinSeok.getName()); // 파라미터 없는 생성자 참조 Supplier<Greeting> newGreeting = Greeting::new; //임의 객체의 인스턴스 메소드 참조(불특정 다수) String[] names = {"JinSeok", "JinSeok2", "Handsome"}; // Arrays.sort(names, new Comparator<String>() { // @Override // public int compare(String o1, String o2) { // 여기서 두개의 값을 비교하여 return(음수, 0, 양수) // return 0; // } // }); Arrays.sort(names, String::compareToIgnoreCase); System.out.println(Arrays.toString(names)); } }
반응형'백기선(인프런 강의) > 더 자바, Java 8' 카테고리의 다른 글
자바 8 API의 기본 메소드와 스태틱 메소드 (0) 2020.07.09 인터페이스 기본 메소드와 스태틱 메소드 (0) 2020.07.08 람다 표현식 (0) 2020.07.07 자바에서 제공하는 함수형 인터페이스 (0) 2020.07.07 함수형 인터페이스와 람다 표현식 (0) 2020.07.06