1. 메서드 참조란?
- 메서드 참조는 람다식보다 더욱 간결하게 표현할 수 있는 방법이다. 그러나, 매번 적용할 수 있는 것이
아니고, 람다식이 하나의 메서드만 호출하는 경우에 해당된다.
- 총 3가지 경우의 메서드 참조가 있는데, 아래의 예시 코드를 보고 이해하자.
(1) static 메서드 참조
: 람다식은 "(x) -> ClassName.method(x)" 이다.
: 메서드 참조는 "ClassName::method" 이다.
(2) 인스턴스 메서드 참조
: 람다식은 "(obj, x) -> obj.method(x)" 이다.
: 메서드 참조는 "ClassName::method" 이다.
(3) 특정 객체 인스턴스메서드 참조
: 람다식은 "(x) -> obj.method(x)" 이다.
: 메서드 참조는 "obj::method" 이다.
MyClass obj = new MyClass();
Function<String, Boolean> f1 = (x) -> obj.equals(x)
//람다식
Function<String, Boolean> f2 = obj::equals;
//메서드 참조
- 하나의 메서드만 호출하는 람다식은 아래와 같이 바꿀 수 있다.
(1) 클래스이름::메서드이름
(2) 참조변수::메서드이름
2. 생성자의 메서드 참조
- 생성자를 호출하는 람다식도 메서드 참조로 변환할 수 있다.
Supplier<MyClass> s1 = () -> new MyClass();
//람다식
Supplier<MyClass> s2 = MyClass::new;
//메서드 참조
( 매개변수와 상관없이 메서드 참조의 형식은 모두 똑같다. )
- 배열은 아래와 같이 해주면 된다.
Function<Integer, int[]> f1 = x -> new int[x];
//람다식
Function<Integer, int[]> f2 = int[]::new;
//메서드 참조
'자바 > 람다식' 카테고리의 다른 글
Function의 합성과 Predicate의 결합 (0) | 2022.04.12 |
---|---|
java.util.function 패키지 (0) | 2022.04.11 |
함수형 인터페이스 (0) | 2022.04.11 |
람다식의 기본 개념 (0) | 2022.04.11 |