티스토리 뷰
//MyConsumer.java
@FunctionalInterface
public interface MyConsumer {
void consume(int i);
}
//Main.java
public class Main {
public static void main(String[] args) {
MySupplier s = new MySupplier() {
@Override public String supply() { return "Hello World";}
};
}
}
위의 Main 클래스를 익명 메소드를 활용하여 간결하게 표현할 수 있다.
//Main.java
public class Main {
public static void main(String[] args) {
MySupplier s = () -> return "Hello World";
}
}
MyMapper 인터페이스를 정의한다.
//MyMapper.java
@FunctionalInterface
public interface MyMapper {
int map(String s);
}
//Main.java
public class Main {
public static void main(String[] args) {
MySupplier s = () -> "Hello World";
MyMapper m = (str) -> str.length();
//MyConsumer c = i -> System.out.println(i);
MyConsumer c = i -> System.out::println; //메소드 레퍼런스를 사용
MyRunnable r = () -> c.consume(m.map(s.supply()));
r.run();
}
}
메소드 레퍼런스를 사용하는 경우
- 최종적으로 적용될 메소드의 레퍼런스를 지정해주는 표현방식이다.
- 람다 표현식에서 입력되는 값을 변경 없이 바로 사용할 때 사용할 수 있다. 즉 매개변수의 변경이 불가하다.
즉, 입력값을 변경하지 말라는 표현방식이기도 하다. - 개발자의 개입을 차단함으로써 안전성을 얻을 수 있다.
728x90
반응형
'프로그래머스 백엔드 1기 > Java' 카테고리의 다른 글
Java Collection (1) - Collection, Method Chaining (0) | 2021.08.08 |
---|---|
Java Interface (6) - 제네릭을 이용한 Consumer, Predicate 패턴 (0) | 2021.08.08 |
Java Interface (4) - 람다 표현식 (익명 메소드) (0) | 2021.08.08 |
Java Interface (3) - 함수형 인터페이스, 익명 클래스 (0) | 2021.08.08 |
Java Interface (2) - Default Method (0) | 2021.08.07 |
댓글