logo

Java 기능 인터페이스

정확히 하나의 추상 메소드를 포함하는 인터페이스를 기능적 인터페이스라고 합니다. 기본 정적 메서드는 여러 개 가질 수 있지만 추상 메서드는 하나만 포함할 수 있습니다. 객체 클래스의 메소드를 선언할 수도 있습니다.

기능적 인터페이스는 단일 추상 메소드 인터페이스 또는 SAM 인터페이스라고도 합니다. 이는 함수형 프로그래밍 접근 방식을 달성하는 데 도움이 되는 Java의 새로운 기능입니다.


실시예 1

 @FunctionalInterface interface sayable{ void say(String msg); } public class FunctionalInterfaceExample implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample fie = new FunctionalInterfaceExample(); fie.say('Hello there'); } } 
지금 테스트해보세요

산출:

 Hello there 

기능적 인터페이스는 객체 클래스의 메소드를 가질 수 있습니다. 다음 예를 참조하세요.

실시예 2

 @FunctionalInterface interface sayable{ void say(String msg); // abstract method // It can contain any number of Object class methods. int hashCode(); String toString(); boolean equals(Object obj); } public class FunctionalInterfaceExample2 implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample2 fie = new FunctionalInterfaceExample2(); fie.say('Hello there'); } } 
지금 테스트해보세요

산출:

 Hello there 

잘못된 기능 인터페이스

기능적 인터페이스는 추상 메서드가 없는 경우에만 다른 인터페이스를 확장할 수 있습니다.

 interface sayable{ void say(String msg); // abstract method } @FunctionalInterface interface Doable extends sayable{ // Invalid '@FunctionalInterface' annotation; Doable is not a functional interface void doIt(); } 

산출:

 compile-time error 

실시예 3

다음 예에서는 기능적 인터페이스가 비기능적 인터페이스로 확장됩니다.

 interface Doable{ default void doIt(){ System.out.println('Do it now'); } } @FunctionalInterface interface Sayable extends Doable{ void say(String msg); // abstract method } public class FunctionalInterfaceExample3 implements Sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample3 fie = new FunctionalInterfaceExample3(); fie.say('Hello there'); fie.doIt(); } } 
지금 테스트해보세요

산출:

 Hello there Do it now 

Java 사전 정의 기능 인터페이스

Java는 람다 및 메서드 참조를 사용하여 함수형 프로그래밍을 처리하기 위해 미리 정의된 함수형 인터페이스를 제공합니다.

자신만의 사용자 정의 기능 인터페이스를 정의할 수도 있습니다. 다음은 java.util.function 패키지에 포함된 기능적 인터페이스 목록입니다.


상호 작용 설명
이중소비자 이는 두 개의 입력 인수를 받아들이고 결과를 반환하지 않는 연산을 나타냅니다.
소비자 이는 단일 인수를 허용하고 결과를 반환하지 않는 작업을 나타냅니다.
기능 하나의 인수를 받아들이고 결과를 반환하는 함수를 나타냅니다.
술부 이는 하나의 인수에 대한 조건자(부울 값 함수)를 나타냅니다.
이중 기능 두 개의 인수를 받아들이고 결과를 반환하는 함수를 나타냅니다.
바이너리연산자 이는 동일한 데이터 유형의 두 피연산자에 대한 연산을 나타냅니다. 피연산자와 동일한 유형의 결과를 반환합니다.
이중 예측 이는 두 인수의 조건자(부울 값 함수)를 나타냅니다.
부울 공급업체 부울 값 결과의 공급자를 나타냅니다.
DoubleBinary연산자 두 개의 double 유형 피연산자에 대한 연산을 나타내며 double 유형 값을 반환합니다.
DoubleConsumer 이는 단일 double 유형 인수를 허용하고 결과를 반환하지 않는 작업을 나타냅니다.
DoubleFunction 이는 double 유형 인수를 받아들이고 결과를 생성하는 함수를 나타냅니다.
DoublePredicate 이는 하나의 double 유형 인수의 조건자(부울 값 함수)를 나타냅니다.
이중 공급업체 이중 유형 결과의 공급자를 나타냅니다.
DoubleToInt함수 이는 double 유형 인수를 받아들이고 int 유형 결과를 생성하는 함수를 나타냅니다.
DoubleToLong 함수 이는 double 유형 인수를 허용하고 Long 유형 결과를 생성하는 함수를 나타냅니다.
DoubleUnaryOperator 이는 double 유형 결과를 생성하는 단일 double 유형 피연산자에 대한 연산을 나타냅니다.
IntBinary연산자 두 개의 int 유형 피연산자에 대한 연산을 나타내고 int 유형 결과를 반환합니다.
내부소비자 이는 단일 정수 인수를 허용하고 결과를 반환하지 않는 작업을 나타냅니다.
Int함수 정수 인수를 받아들이고 결과를 반환하는 함수를 나타냅니다.
IntPredicate 이는 하나의 정수 인수에 대한 조건자(부울 값 함수)를 나타냅니다.
내부공급자 정수형의 공급자를 나타냅니다.
IntToDouble함수 이는 정수 인수를 받아들이고 double을 반환하는 함수를 나타냅니다.
IntToLong 함수 정수 인수를 받아들이고 long을 반환하는 함수를 나타냅니다.
IntUnaryOperator 이는 정수 결과를 생성하는 단일 정수 피연산자에 대한 연산을 나타냅니다.
LongBinary연산자 두 개의 긴 유형 피연산자에 대한 연산을 나타내고 긴 유형의 결과를 반환합니다.
LongConsumer 단일 긴 유형 인수를 허용하고 결과를 반환하지 않는 작업을 나타냅니다.
LongFunction 긴 형식의 인수를 받아들이고 결과를 반환하는 함수를 나타냅니다.
LongPredicate 이는 하나의 긴 유형 인수의 조건자(부울 값 함수)를 나타냅니다.
롱공급자 긴 유형의 결과 공급자를 나타냅니다.
LongToDouble함수 long 타입의 인자를 받아 double 타입의 결과를 반환하는 함수를 나타냅니다.
LongToInt함수 이는 긴 유형의 인수를 받아들이고 정수 결과를 반환하는 함수를 나타냅니다.
Long단항 연산자 이는 긴 유형 결과를 반환하는 단일 긴 유형 피연산자에 대한 연산을 나타냅니다.
ObjDoubleConsumer 이는 개체와 이중 인수를 허용하고 결과를 반환하지 않는 작업을 나타냅니다.
ObjIntConsumer 객체와 정수 인수를 허용하는 연산을 나타냅니다. 결과를 반환하지 않습니다.
ObjLongConsumer 이는 객체와 긴 인수를 허용하는 작업을 나타내며 결과를 반환하지 않습니다.
공급자 이는 결과 공급업체를 나타냅니다.
ToDoubleBi함수 이는 두 개의 인수를 받아들이고 double 유형 결과를 생성하는 함수를 나타냅니다.
ToDouble함수 double형 결과를 반환하는 함수를 나타냅니다.
ToIntBi함수 이는 두 개의 인수를 받아들이고 정수를 반환하는 함수를 나타냅니다.
ToInt함수 정수를 반환하는 함수를 나타냅니다.
ToLongBi 함수 두 개의 인수를 받아 long 형식의 결과를 반환하는 함수를 나타냅니다.
ToLong 함수 long 타입의 결과를 반환하는 함수를 나타냅니다.
단항 연산자 이는 피연산자와 동일한 유형의 결과를 반환하는 단일 피연산자에 대한 연산을 나타냅니다.