BackEnd/Java
Java8. 메소드 레퍼런스 (Method Reference)
hanseom
2022. 1. 20. 23:27
반응형
메소드 레퍼런스(Method Reference)란 ::를 사용하여 축약하는 방법입니다.
메소드 참조 방법
- Static Method 참조
- 특정 객체 Instance Method 참조
- 생성자 참조
- 임의 객체 Instance Method 참조
메소드 또는 생성자의 매개변수로 람다의 입력 값을 받으며, 리턴 값 또는 생성한 객체는 람다의 리턴 값입니다.
public class Hello {
private String name;
public Hello() {}
public Hello(String name) { this.name = name; }
public String print(String name) { return "Hello, " + name; }
public String printName() { return "Hello, " + this.name; }
public static String printJava() { return "Hello, Java!!"; }
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.function.Function;
import java.util.function.Supplier;
public class MethodReference {
public static void main(String[] args) {
// Static Method 참조
Supplier<String> supplier = Hello::printJava; // () -> Hello.printJava();
System.out.println(supplier.get()); // [결과]: Hello, Java!!
// 특정 객체의 Instance Method 참조
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
// 임의 객체의 Instance Method 참조
String[] names = {"aJava","cJava","bJava"};
Arrays.sort(names, String::compareToIgnoreCase);
System.out.println(Arrays.toString(names)); // [결과]: [aJava, bJava, cJava]
}
}
반응형