반응형
목차
· 메서드 참조란?
· 메서드 레퍼런스의 4가지 케이스
· ClassName::staticMethodName
· objectName::instanceMethodName
· ClassName::instanceMethodName
· ClassName::new
메서드 참조란?
람다 표현식이 단 하나의 메서드만을 호출하는 경우에 해당 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해준다.
:: 오퍼레이터 사용한다.
생략이 많기 때문에 사용할 메서드의 매개변수의 타입과 리턴 타입을 미리 숙지해야 한다.
메서드 레퍼런스의 4가지 케이스
- ClassName::staticMethodName : 클래스의 static method를 지정할 때
- objectName::instanceMethodName : 선언된 객체의 instance method를 지정할 때
- ClassName::instanceMethodName : 객체의 instance method를 지정할 때
- ClassName::new : 클래스의 constructor를 지정할 때
1. ClassName::staticMethodName
클래스의 static method (정적 메서드)를 지정할 때
Function<String, Integer> str2int = Integer::parseInt;
int five = str2int.apply("5");
2. objectName::instanceMethodName
이미 선언되어있는 객체의 instance method를 지정할 때
String str = "hello";
Predicate<String> equalsToHello = str::equals;
boolean helloEqualsWorld = equalsToHello.test("world");
3. ClassName::instanceMethodName
해당 클래스의 인스턴스를 매개변수(parameter)로 넘겨 메서드를 실행해주는 함수
Function<String, Integer> strLength = String::length;
int length = strLength.apply("Hello world!");
BiPredicate<String, String> strEquals = String::equals;
boolean result = strEquals.test("hello", "world");
4. Constructor Reference
생성자를 호출하는 람다 표현식도 앞서 살펴본 메소드 참조를 이용할 수 있다.
public class User {
private String name;
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
}
BiFunction<Integer, String, User> userCreator = User::new;
User cha = userCreator.apply("Char", 12);
반응형
'Language > Java' 카테고리의 다른 글
Java 스트림 (Stream) 사용법 및 정리 2/3 (Reduce, Max, Min ..) (0) | 2022.10.10 |
---|---|
Java 스트림 (Stream) 사용법 및 정리 1/3 (Map, Filter, FlatMap ..) (0) | 2022.10.09 |
Java 8 함수형 인터페이스 이해하기 (0) | 2022.10.08 |
Java 람다 표현식과 Function Interface (0) | 2022.10.08 |
Java 8과 함수형 프로그래밍 (0) | 2022.10.08 |