-
Java8. 메소드 레퍼런스 (Method Reference)BackEnd/Java 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] } }
반응형'BackEnd > Java' 카테고리의 다른 글
Java8. Optional (0) 2022.01.22 Java8. 스트림 (Stream) (0) 2022.01.22 Java8. 기본 메소드 (Default Method)와 스태틱 메소드 (Static Method) (0) 2022.01.22 Java8. 람다 표현식 (Lambda Expressions) (0) 2022.01.20 Java8. 함수형 인터페이스 (Functional Interface) (0) 2022.01.20