본문으로 바로가기

[Java 8] 메서드 레퍼런스(Methods Reference)

category Java 2020. 9. 15. 18:26

메서드 레퍼런스(Methods Reference)

메서드 레퍼런스는 이름에서 알 수 있듯이 메서드의 레퍼런스를 전달한다는 의미이며, 람다표현식에서 메서드 호출 1회로 코드가 끝나는 경우 메서드 레퍼런스를 이용해 이미 줄인 코드를 더 줄일수도있다.

메서드의 레퍼런스라고하지만 엄밀히 말해 자바에서의 메서드는 일급 객체가 아니기때문에 객체의 레퍼런스를 전달하는 방식으로 작동한다.

##

  1. 스태틱 메서드 참조

-> 스태틱 메서드를 참조할때는 [타입 :: 스태틱 메서드]

public class staticMethods {
    private String name;
    public static String hi(String name){  
    return "hi" + name;  
}

    UnaryOperator<String> hi = Greeting::hi;
  1. 특정 객체의 인스턴스 메서드 참조

->인스턴스 메서드를 참조할때는 [객체 래퍼런스 :: 인스턴스 메서드]

public class instanceMethods {
    private String name;
    public String hello(String name){  
    return "hello" + name;  
}

    Greeting greeting = new Greeting();  
    UnaryOperator<String> hello= greeting::hello;
  1. 임의 객체의 인스턴스 메서드 참조

->임의 객체의 인스턴스 메서드를 참조할때는 [타입::인스턴스 메서드]

String [] arr = {"apple" , "banana", "strawberry"};  
Arrays.sort(arr, String::compareToIgnoreCase);
  1. 생성자 참조

-> 생성자를 참조할때는 [타입 :: new]

public class ConstructorTest{
    private String name;

    public ConstructorTest(String name) {
        this.name = name;

Function<String,Greeting> KH= ConstructorTest::new;  
ConstructorTestKH = KH.apply("JKH");
}