728x90
5. 메소드 레퍼런스
람다가 하는 일이 기존 메소드 또는 생성자를 호출하는 거라면, 메소드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다.
메소드 참조하는 방법
스태틱 메소드 참조 | 타입::스태틱 메소 |
---|---|
특정 객체의 인스턴스 메소드 참조 | 객체 레퍼런스::인스턴스 메소드 |
임의 객체의 인스턴스 메소드 참조 | 타입::인스턴 메소드 |
생성자 참조 | 타입:new |
- 메소드 또는 생서앚의 매개변수로 람다의 입력값을 받는다.
- 리턴값 또는 생성한 객체는 람다의 리턴값이다.
public class Greeting {
private String name;
public Greeting() {
}
public Greeting(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String hello(String name) {
return "hello " + name;
}
public static String hi(String name) {
return "hi " + name;
}
}
import java.util.Arrays;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
public class App1 {
public static void main(String[] args) {
UnaryOperator<String> hi = Greeting::hi;
System.out.println("hi: " + hi.apply("young"));
// 인스턴스의 매서드를 사용
Greeting greeting = new Greeting();
UnaryOperator<String> hello = greeting::hello;
System.out.println("hello: " + hello.apply("young"));
//입력 값은 없는데 결과 값은 있는것
Supplier<Greeting> newGreeting = Greeting::new;
System.out.println("newGreeting.get(): " + newGreeting.get());
Function<String, Greeting> youngGreeting = Greeting::new;
Greeting young = youngGreeting.apply("young");
System.out.println("youngGreeting.apply(\"young\"): " + young);
System.out.println("young.getName(): " + young.getName());
// 임의 객체의 인스턴스 메소드 참조
String[] names = {"young", "whiteship", "toby"};
//Arrays.sort(names, (o1, o2) -> 0);
Arrays.sort(names, String::compareToIgnoreCase);
System.out.println(Arrays.toString(names));
}
}
hi: hi young
hello: hello young
newGreeting.get(): me.whiteship.java8to11.Greeting@7cca494b
youngGreeting.apply("young"): me.whiteship.java8to11.Greeting@3b9a45b3
young.getName(): young
[toby, whiteship, young]
참고
https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html
728x90
반응형
'Programming > Java' 카테고리의 다른 글
[Java] - 7. 자바 8 API의 기본 메서드와 스태틱 메소드 (0) | 2023.04.04 |
---|---|
[Java] - 6. 인터페이스 기본 메소드와 스태틱 메소드 (0) | 2023.04.01 |
[Java] - 4. 람다 표현식 (0) | 2023.04.01 |
[Java] - 3. 자바에서 제공하는 함수형 인터페이스 (0) | 2023.04.01 |
[Java] - 2. 함수형 인터페이스와 람다 표현식 소개 (0) | 2023.04.01 |