인프런 강의 "더 자바, JAVA8"(백기선님)의 강의를 듣고 정리한 글 입니다.
JAVA8에 추가된 핵심 기능들을 이해하기 쉽게 설명해 주시니 한번씩 들어보시는 것을 추천드립니다.
람다가 하는 일이 기존 메서드 또는 생성자를 호출하는 거라면, 메소드 래퍼런스를 사용해서 매우 간결하게 표현할 수 있다.
설명 | 형식 |
---|---|
스태틱 메소드 참조 | 타입::스태틱 메소드 |
특정 객체의 인스턴스 메소드 참조 | 객체 레퍼런스::인스턴스메소드 |
임의 객체의 인스턴스 메소드 참조 | 타입::인스턴스 메소드 |
생성자 참조 | 타입::new |
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;
}
}
public class App {
public static void main(String[] args) {
Greeting greeting = new Greeting();
UnaryOperator<String> hello = greeting::hello; // 타입::인스턴스 메소드
UnaryOperator<String> hi = Greeting::hi; // 타입::스태틱 메소드
Supplier<Greeting> newGreeting = Greeting::new; // 타입::new
Function<String, Greeting> createGreeting = Greeting::new; // 타입::new
String[] names = {"jay", "keesun", "toby"};
Arrays.sort(names, String::compareToIgnoreCase); // 타입::인스턴스 메소드
}
}