250x250
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 |
Tags
- ORM
- 자바8
- 대용량 업로드
- rabbitmq
- 보안
- sqlserver
- JPA
- jqGrid
- Jenkins
- Javascript
- java
- mom
- DevOps
- docker
- 엑셀 업로드
- spring
- 자동배포
- 스트림
- poi
- MessageQueue
- 그리드
- Stream
- apache.poi
- JQuery
- QueryDSL
- 제이쿼리그리드
- 자동빌드
- ci/cd
- stream api
- mssql
Archives
- Today
- Total
개발 메모장
[Java] 함수형 인터페이스(Functional Interface) 본문
728x90
- 단일 추상 메서드가 있는 인터페이스이며, 람다식 및 메서드 참조에 대한 내용을 제공합니다.
- Java 8부터 기능이 추가 됐고 이에 따라 더 손쉽게 개발할 수 있게 됐습니다.
- 람다식을 이용할 때 더 간결하고 읽기 쉬운 코드를 구현할 수 있으며, 재사용 가능한 코드 구성요소를 작성할 때 좋습니다.
#. 사용자 정의 함수형 인터페이스
- 위 내용과 같이 함수형 인터페이스를 정의하기 위해선 단일 추상 메서드가 사용되어야 합니다.
- 이 때 명시적 표기, 가독성 및 컴파일러 적용을 위해 @FunctionalInterface 어노테이션을 추가해줍니다.
- 아래와 같이 test 메서드에서 MyFuction 함수형 인터페이스를 참조하여 사용할 수 있습니다.
@FunctionalInterface
interface MyFunction() {
int cal(int x, int y);
}
@RestController
public class LambdaController {
@GetMapping("/")
public void test() {
MyFunction f = (x, y) -> {
return (x+y);
}
int result = f.cal(88, 5);
System.out.println(result); // 93
}
}
728x90
#. 내장 함수형 인터페이스
- 내장 함수형 인터페이스는 java.util.function에서 import하여 사용할 수 있으며 아래 소개한 인터페이스 외 내용은 라이브러리 내 위 경로에서 직접 확인할 수 있습니다.
1. Function<T, R>
- 추상 메서드 - R apply(T t)
- T 타입으로 입력 받고 R 타입으로 결과를 리턴합니다.
public int functionTest() {
Function<String, Integer> test = (String str) -> {
return str.length();
};
int result = test.apply("안녕,Tester");
System.out.println("test ===> " + result); // 9
return result;
}
2. Consumer<T>
- 추상 메서드 - void accept(T t)
- T 타입으로 단일 인수만 입력 받고 리턴하지 않습니다.
public void consumerTest() {
Consumer<String> test = (String age) -> {
System.out.println(age);
};
test.accept("25"); // 25
}
3. Supplier<T>
- 추상 메서드 - T get()
- 인수를 입력 받지 않고 T 타입으로 결과를 리턴합니다.
public String supplierTest() {
Supplier<String> test = () -> {
return "테스트입니다.";
};
String result = test.get();
System.out.println("test ====> " + result); // 테스트입니다
return result;
}
4. Predicate<T>
- 메서드 - boolean test(T t)
- T 타입으로 하나의 인수를 입력 받아 테스트하고 Boolean형으로 결과를 리턴합니다.
public boolean predicateTest() {
Predicate<String> test = (String str) -> {
return str.isEmpty();
};
boolean result1 = test.test("");
boolean result2 = test.test("test");
System.out.println("test ====> " + result1); // true
System.out.println("test ====> " + result2); // false
return result1;
}
5. BiFunction<T, U, R>
- 추상 메서드 - R apply(T t, U u)
- T와 U 타입으로 두개의 인수를 입력 받고 R 타입으로 결과를 리턴합니다.
public void bifunctionTest() {
BiFunction<Integer, Integer, String> test = (t, u) -> {
return t+u.toString();
};
String result = test.apply(58, 60);
System.out.println("test ====> " + result); // 5860
}
6. BinaryOperator<T>
- 추상 메서드 - T apply(T t1, T t2)
- T 타입의 두 인수를 입력 받고 T 타입으로 결과를 반환합니다.
public void binaryOperatorTest() {
BinaryOperator<String> test = (a, b) -> {
return a+b;
};
String result = test.apply("test", "입니다");
System.out.println("test ====> " + result); // test입니다
}
7. UnaryOperator<T>
- 추상 메서드 - T apply(T t)
- T 타입으로 하나의 인수를 입력 받고 동일한 유형으로 결과를 반환합니다.
public void unaryOperatorTest() {
UnaryOperator<String> test = t -> {
return t.toUpperCase();
};
String result = test.apply("upper and lower");
System.out.println("test ====> " + result); // UPPER AND LOWER
}
#. 추가적인 함수형 인터페이스 확인
- 프로젝트 내 라이브러리에서 확인할 수도 있으며, 아래 링크에서 참고 가능하니 확인바랍니다.
- https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
===========================================================
틀린 내용이 있거나 이견 있으시면 언제든 가감 없이 말씀 부탁드립니다!
출처 및 참고 : https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
===========================================================
728x90
'Java' 카테고리의 다른 글
[Java] 공공데이터 - IP 확인 API 사용하기 (0) | 2025.03.06 |
---|---|
[Java] HTTPS 통신 시 인증서 관련 오류(DH keypair) (1) | 2024.11.05 |
[Java] keytool을 이용한 루트 인증서 등록(SSLHandshakeException) (0) | 2024.04.18 |
[Java] Apache.POI 엑셀 업로드 구현 - DB 처리(3/3) (1) | 2024.01.05 |
[Java] Apache.POI 엑셀 업로드 구현 - Controller(2/3) (2) | 2024.01.04 |