본문 바로가기
정리/Java

Java - 메서드 레퍼런스(method reference)

by 난파선 2017. 3. 10.


하나의 메서드만 호출하는 람다식은 ‘메서드 레퍼런스’로 간단히 할 수 있다.

1. 정적 메서드 레퍼런스

//패턴
(args) -> ClassName.staticMethod(args)
ClassName::staticMethod

Function<String, Integer> f = (String s) -> Integer.parseInt(s);
Function<String, Integer> f = Integer::parseInt; // 메서드 레퍼런스

2. 인스턴스 메서드 레퍼런스

(arg0, rest) -> arg0.instanceMethod(rest)
ClassName::instanceMethod

BiFunction<String,String,Boolean> f = (s1, s2) -> s1.equals(s2);
BiFunction<String,String,Boolean> f = String::equals;

3. 특정 객체의 인스턴스 메서드 레퍼런스

(args) -> expr.instanceMethod(args)
expr::instanceMethod

TempClass tc = new TempClass();
Function<String, Boolean> f = (x) -> tc.equals(x); // 람다식
Function<String, Boolean> f2 = tc::equals; // 메서드 레퍼런스

4. 생성자 레퍼런스

// 함수형 인터페이스에 따라 new 연산자 파라미터가 달라진다.
Supplier<TempClass> tc = TempClass::new// () -> new TempClass(), 디폴트 생성자
Function<Integer, TempClass> f2 = TempClass::new// (i) -> new TempClass(i)
Function<Integer, int[]> f2 = int[]::new// x -> new int[x];

'정리 > Java' 카테고리의 다른 글

Java - default 메서드  (0) 2017.03.13
Java - collect(), Collector, Collectors  (0) 2017.03.11
Java - Stream 최종 연산자(reduce)  (0) 2017.03.09
Java - Stream 최종 연산자  (0) 2017.03.08
Java - Optional  (0) 2017.03.07

댓글