Method reference
메소드 참조는 람다식을 쓰는경우, 무명함수를 정의하여 사용하는 경우도 존재하지만 실제 존재하는 메소드를 호출하는 경우도 있는데 이 때, 람다식 대신 메소드 참조를 사용할 수 있다.
아래와 같이 두 사람의 생일을 비교하는 static 메소드가 있다.
1 | |
사람의 생일을 비교해서 정렬하는 람다식은 아래와 같이 작성할 수 있다.
1 | |
하지만 나이를 비교하는 compareByAge()메소드가 이미 구현되어있기 때문에 아래와 같이 사용할 수 있다.
1 | |
그리고 위의 경우처럼 람다식을 사용하는 것이 아닌, 이미 구현한 메소드를 참조해서 사용할 수도 있다.
1 | |
Reference의 종류
| 종류 | 예제 |
|---|---|
| 참조 대상이 static 메소드인 경우 | ContainingClass::staticMethodName |
| 참조 대상이 특정 객체의 instance 메소드인 경우 | containingObject::instanceMethodName |
| 참조 대상이 특정 타입의 instance 메소드인 경우 | ContainingType::methodName |
| 참조 대상이 생성자인 경우 | ClassName::new |