반응형
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
- 스프링부트
- 알고리즘
- 자바
- 코딩테스트
- 카카오
- 스프링핵심원리
- 스프링 핵심원리
- 스프링
- 카카오 면접
- 이차전지관련주
- 티스토리챌린지
- 이펙티브 자바
- 예제로 배우는 스프링 입문
- 알고리즘정렬
- k8s
- 엘라스틱서치
- 자바스크립트
- kubernetes
- effectivejava
- Effective Java
- 김영한
- JavaScript
- java
- 이펙티브자바
- ElasticSearch
- 클린아키텍처
- Effective Java 3
- Spring
- 오블완
- Sort
Archives
- Today
- Total
Kim-Baek 개발자 이야기
[Java] 함수형 인터페이스 (@FunctionalInterface) 본문
빈번하게 사용되는 함수적 인터페이스(Functional Interface)는 java.util.function 표준 API 패키지로 제공한다.
java.util.function 패키지의 함수적 인터페이스는 크게 Consumer, Supplier, Function, Operator, Predicate로 구분된다.
> 필요한 용도에 맞는 게 있다면, 직접 구현하지 말고 표준 함수형 인터페이스를 활용하라
java.util.function 패키지에는 총 43개의 인터페이스가 있지만, 6개만 알면 나머지는 유추 가능
1. UnaryOperator -> 인수가 1개
String::toLowerCase
2. BinaryOperator -> 인수가 2개
BigInteger::add
3. Predicate -> 인수 1개를 받아 boolean 반환
Collectiong:isEmpty
4. Function -> 인수와 반환 타입이 다름
Arrays::asList
5. Supplier -> 인수를 받지 않고 반환 값 있음
Instant::now
6. Consumer -> 인수를 1개 받고 반환 값 없음
System.out::println
Example
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
private static void example() {
final Consumer<String> greetings = value -> System.out.println("Hello " + value);
greetings.accept("World"); // Hello World
}
기본 인터페이스는 기본 타입이 int, long, double 3개이다
- IntPredicate : int 를 받는 Predicate
- LongBinaryOperator : long을 받아 long을 반환함
- LongFunction<int[]> : long을 받아 int[] 반환
- LongtoIntFunction : long을 받아 int 반환
- ToLongFunction<int[]> : int[]를 받아 long을 반환 ....
기본 함수형 인터페이스에 박싱된 기본 타입을 넣어 사용하지는 말자 => 성능 저하
표준 함수형 인터페이스를 사용할 수 없을때, 직접 작성하자
직접 만든 함수형 인터페이스에는 항상 @FunctionalInterface 애너테이션을 사용하라
// 컴파일 OK
public interface FunctionalInterfaceExample {
}
// 추상 메소드가 없으므로 컴파일 에러
@FunctionalInterface
public interface FunctionalInterfaceExample {
}
// 추상 메소드가 두 개 이상이면 컴파일 에러
@FunctionalInterface
public interface FunctionalInterfaceExample {
void apply();
void illigal(); // error
}
반응형
'개발' 카테고리의 다른 글
클린 아키텍처 - 2장 두 가지 가치에 대한 이야기 (0) | 2022.01.31 |
---|---|
클린아키텍처 - 1장 설계와 아키텍처란 (0) | 2022.01.31 |
[카카오 면접] Java Out Of Memory ( OOM ) (0) | 2020.08.12 |
[카카오 면접] JAVA 10, 11, 12 (0) | 2020.08.10 |
[카카오 면접] Garbage Collector 의 여러 방법 (0) | 2020.08.07 |
Comments