JAVA 8 - 메소드 레퍼런스

태히·2022년 5월 12일
0

JAVA8

목록 보기
2/2

메소드 레퍼런스

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

//Greeting 클래스
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;
    }
}

스태틱 메소드 참조

UnaryOperator<String> hi = Greeting::hi;
hi.apply("Stay");
// 출력 : "hi Stay"

특정 객체의 인스턴스 메소드 참조

Greeting greeting = new Greeting();
UnaryOperator<String> hello = greeting::hello;
hello.apply("Stay");
//출력 : "hello Stay"

생성자 참조

Supplier<Greeting> newGreeting = Greeting::new;
Greeting greeting = newGreeting.get();
//Greeting 타입의 greeting이 생성.

임의 객체의 인스턴스 메소드 참조

String[] names = {"KEE","WHIE","TOBY"};
Arrays.sort(names, String::compareToIgnoreCase);

compareToIgnoreCase는 현재 인스턴스와 파라미터로 들어오는 문자열을 대소문자 상관없이 비교하여 문자열파라미터가 작은경우 0보다 큰 값 반환, 문자열 파라미터가 큰 경우 0보다 작은 값 반환, 같은 경우 0이 반환됨.
이때 인스턴스란 names배열에 있는 요소들 하나하나를 말한다. 그래서 "KEE"와 "WHIE"를 처음에 비교하고 또 "TOBY"를 비교하는 형식이다.

profile
하고싶은게 많은 개발자가 되고싶은

0개의 댓글