람다 표현식으로 구현 시 단 하나의 메서드만을 호출하는 경우, 매개변수 없이 축약해서 사용할 수 있도록 해준다.
public class Hello {
private String name;
public Hello() {
}
public Hello(String name) {
this.name = name;
}
public static String printJava() {
return "Hello, Java!!";
}
public String print(String name) {
return "Hello, " + name;
}
public String printName() {
return "Hello, " + this.name;
}
}
Supplier<String> supplier = Hello::printJava; // () -> Hello.printJava();
System.out.println(supplier.get()); // [결과]: Hello, Java!!
Hello hello = new Hello();
Function<String, String> function = hello::print; // s -> hello.print(s);
System.out.println(function.apply("Java!")); // [결과]: Hello, Java!
Function<String, Hello> newHello = Hello::new; // s -> new Hello(s);
System.out.println(newHello.apply("Java").printName()); // [결과]: Hello, Java
String[] names = {"a", "c", "b"};
Arrays.sort(names, String::compareToIgnoreCase);
System.out.println(Arrays.toString(names)); // [결과]: [a, b, c]