ABOUT ME

Today
Yesterday
Total
  • 메소드 래퍼런스
    백기선(인프런 강의)/더 자바, 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));
    	}
    
    }
    반응형
Designed by Tistory.