Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- VMware
- MongoDB
- NoSQL
- 레디스
- Spring Boot
- in-memory
- document database
- 호이스팅
- 스프링 시큐리티
- JPA
- github
- 동적계획법
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 게시판
- 정처기
- 분할정복
- Redis
- 자바의 정석
- 캐시
- 실행 컨텍스트
- SQL
- 스프링 부트
- 이벤트루프
- 영속성 컨텍스트
- 다이나믹프로그래밍
- 정보처리기사
- 스프링부트
- 깃허브
- sqld
- spring security
Archives
- Today
- Total
FreeHand
함수형 인터페이스 본문
단 하나의 추상 메서드만 선언된 인터페이스.
// 함수형 인터페이스
@FunctionalInterface
interface AddNumber {
int add(int x, int y);
}
// 익명 클래스
AddNumber addNumber1 = new AddNumber() {
public int add(int x, int y) {
return x + y;
}
}
// 람다식 (함수형 인터페이스 메서드와 람다식의 매개변수 개수와 반환타입이 일치해야 함)
AddNumber addNumber2 = (x, y) -> x + y;
int result1 = addNumber1.add(5, 10); // 15
int result2 = addNumber2.add(5, 10); // 15
자바에서 람다식은 익명객체이므로 람다식을 다루려면 참조변수(addNumber2)가 필요한데 이때 참조변수의 타입을 함수형 인터페이스로 사용한다. 람다식을 호출하기 위해서 함수형 인터페이스의 추상 메서드 이름(add)을 사용한다.
java.util.function 패키지에 이미 정의된 함수형 인터페이스가 있다.
- Function<T, R>
Function<String, Integer> f = s -> Integer.parseInt(s);
// Fucntion<String, Integer> f = Integer::parseInt;
System.out.println(f.apply("3")); // 3(Integer)
Function 함수형 인터페이스는 한 개를 input 받고 한 개를 return 한다.
- Consumer<T>
Consumer<Integer> c = i -> System.out.println(i);
// Consumer<Integer> c = System.out::println;
c.accept(3); // 3
Consumer 함수형 인터페이스는 한 개를 input 받고 아무것도 return 하지 않는다.
- Supplier<T>
Supplier<Integer> s = () -> 3;
System.out.println(s.get()); // 3
Supplier 함수형 인터페이스는 input 받지 않고 return 한다.
- Predicate<T>
Predicate<String> p = s -> s.startsWith("a");
System.out.println(p.test("abc")); // true
Predicate 함수형 인터페이스는 한 개를 input 받아서 boolean 타입을 return 한다.
- UnaryOperator<T>
UnaryOperator<Integer> u = i -> i * 2;
System.out.println(u.apply(5)); // 10
UnaryOperator 함수형 인터페이스는 Function과 기능은 동일하지만 input과 return의 타입이 일치할 때 사용한다.
이외에도 BiFunction<T, U, R>, BinaryOperator<T> 등 여러 함수형 인터페이스가 java.util.function 패키지에 정의되어 있다.