728x90
- 람다식이 하나의 메서드만 호출하는 경우에는 메서드 참조(method reference)라는 방법으로 람다식을 간략히 할 수 있다.
-
//예1) static 메서드 참조 (기존) Function<String, Ingeter> f = (String s) -> Integer.parseInt(s); //람다식 (변경) Function<String, Integer> f2 = Integer::parseInt; //메서드 참조 //예2) 인스턴스 메서드 참조 (기존) BiFunction<String, String, Boolean> f = (s1, s2) -> s1.equals(s2); //람다식 (변경) BiFunction<String, String, Boolean> f2 = String::equals; //메서드 참조 //예3) 특정 객체 인스턴스 메서드 참조 MyClass obj = new MyClass(); (기존)Function<String, Boolean> f = (x) -> obj.equals(x); //람다식 (변경)Function<String, Boolean> f2 = obj::equals; //메서드 참조
- 컴파일러는 생략된 부분을 우변의 선언부 또는 좌변의 Function 인터페이스에 지정된 지네릭 타입으로 부터 유추할 수 있다.
- 결론적으로 하나의 메서드만 호출하는 람다식은 ‘클래스이름::메서드이름’ 또는 ‘참조변수::메서드이름’으로 바꿀 수 있다.
- 생성자의 메서드 참조
- 생성자를 호출하는 람다식도 메서드 참조로 변환할 수 있다.
예)
Supplier<MyClass> s = () -> new MyClass(); //람다식
Supplier<MyClass> s = MyClass::new; //메서드 참조
예2) 매개변수가 있는 생성자인 경우
Function<Integer, MyClass> f = (i) -> new MyClass(i); //람다식
Function<Integer, MyClass> f2 = MyClass::new; //매서드 참조
728x90
'JAVA' 카테고리의 다른 글
[디자인 패턴]Builder pattern 이란? (0) | 2022.03.22 |
---|---|
Java 8 LocalDateTime 직렬화 역직렬화 오류 (0) | 2022.03.02 |
스트림의 기본 및 간단한 특징 (0) | 2022.02.14 |
자바 람다함수(with 함수형 인터페이스) (0) | 2022.02.14 |
람다(Lambda) 함수 사용법(with collection 함수) (0) | 2022.02.14 |