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

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 static void main(String[] args) {
UnaryOperator<String> hi = Greeting::hi;
String hiWooksang = hi("Wooksang");
Greeting greeting = new Greeting();
UnaryOperator<String> hello = greeting::hello;
String helloWookang = hello.apply("Wooksang");
Supplier<Greeting> supplier = Greeting::new;
Greeting greetingInstance = supplier.get();
Function<String, Greeting> function = Greeting::new;
Greeting greetingInstance2 = function.apply("Wooksang");
String[] names = {"Wooksang", "today8934", "RyuWooksang"};
Arrays.sort(names, String::compareToIgnoreCase);
}
메소드 참조하는 방법