하나의 메서드만 호출하는 람다식은 ‘메서드 레퍼런스’로 간단히 할 수 있다.
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 |
댓글