
오늘은 함수형 인터페이스에 대해서 알아보도록 합시다
함수형 인터페이스를 왜 알아야 하냐면 이 전 내용에 람다식을 알아봤죠
람다식은 함수형 인터페이스로만 사용이 가능하기 때문에 알고 있어야 하는 것입니다
영어론 Functional Interface 한글론 함수형 인터페이스 라고 말합니다
특징부터 살펴보자면
함수형 인터페이스라는 것은 1개의 추상 메소드만 가지고 있는 인터페이스입니다
java8 버전부터는 인터페이스에서 디폴트 메서드를 포함할 수 있지만
여러 개의 디폴트가 있더라도 추상 메서드만 딱 하나면 함수형 인터페이스 라고 합니다
딱 이것만 기억하시면 됩니다 추상 메서드가 한 갠가?! 한 개면 함수형 인터페이스
라고 인식 하시면 됩니다
함수형 인터페이스는
@FunctionalInterface 어노테이션을 사용합니다
붙여도 되고 안 붙여도 되지만 붙여줌으로 JVM에게 검증을 떠넘길 수가 있습니다 ㅎㅎ 그러니 꼭 붙입시다
@FunctionalInterface
interface MyFunctionalInter<T> {
//나는 추상메서드
T hello();
/*
* //나는 추상메서드2 T bye();
*/
default void defauntPln() {
System.out.println("디폴트 메서드");
}
static void staticPln() {
System.out.println("스테틱 메서드");
}
}
간단한 함수형 인터페이스를 구현했습니다
말해드린 것처럼 디폴트 메서드와 스테틱 메서드는 있어도 상관이 없습니다 ㅎㅎ
단지 추상 메서드가 딱 1개!! 강조해서 기억합시다
주석처리 해놓은 코드의 주석을 없애면 에러가 나온답니다
자 그럼 사용법을 알아봅시다
MyFunctionalInter<String> mfi = () -> "함수형 인터페이스 람다식 표현";
// abstract method
String s = mfi.hello();
System.out.println(s);
//디폴트 메서드
mfi.defauntPln();
//스테틱 메서드
MyFunctionalInter.staticPln();
메인 메서드에서 실행했으며 어디서 많이 본 코드 형태가 보이시죠
람다식을 이용했습니다 ㅎㅎ
저 코드로 실행하면 함수형 인터페이스에 문자열이 래핑 되고 자연스레 hello추상메서드는
문자열을 리턴하겠죠?ㅎㅎ 그래서 우리가 원하는 값을 받아낼 수 있습니다
이와 같은 값을 얻어낼 수 있습니다
아참 그리고 static 메서드는 어떻게 호출하는지 다시 한번 체크하셔요 ㅎㅎ 저도 잠깐 아 맞다! 했습니다 ㅎㅎ
이 정도로 함수형 인터페이스만 알아두시면 좋을 것 같고요
사실 함수형 인터페이스를 직접 만드실 일은 그다지 거의 아마 그냥 없을 것 같아요 ㅋㅋ
이미 자바에서 만들어 두었기 때문에 굳이 만들 필요는 없다고 생각합니다 ㅎㅎ
다음시간엔 자바에서 제공하는 함수형 인터페이스는 무엇이 있나 살펴보도록 합시다
'Developer > Java' 카테고리의 다른 글
[java]프로그래머스-삼각형의 완성조건 (1) (0) | 2023.05.24 |
---|---|
[java]프로그래머스-부족한 금액 (0) | 2023.05.17 |
[java]람다식 (0) | 2022.12.07 |
[java]스레드2(Thread) (0) | 2022.12.06 |
[java]스레드(Thread) (0) | 2022.11.29 |