Java 8에서 처음 도입되었습니다. 기능적 인터페이스는 단일 추상 메소드를 갖는 인터페이스로 정의할 수 있습니다. 이는 Java의 기능적 인터페이스가 단일 기본 기능만 제공한다는 것을 의미합니다. 그러나 기능적 인터페이스에는 단일 추상 메서드 외에도 정적 메서드와 기본 메서드가 포함될 수 있습니다. java.util.function.Function, java.util.function.Predicate, UnaryOperator, BinaryOperator, Supply, Consumer는 Java에 내장된 기능적 인터페이스의 예입니다.
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
다음은 기본 구문입니다.
public interface MyFunctionalInterface(){ // abstract method public void functionalMethod(); }
위 구문에서 MyFunctionalInterface라는 인터페이스에는 구현되지 않은 단일 메서드만 포함되어 있음을 알 수 있습니다. 이것이 바로 기능적 인터페이스로 간주될 수 있는 이유입니다. 아래 표시된 것과 같은 정적 및 기본 메소드를 포함할 수도 있습니다.
public interface MyFunctionalInterface(){ public default void defaultMethod(){ // default method logic goes here } public static void staticMethod(){ // static method logic goes here } // abstract method public void functionalMethod(); }
또한 다음과 같은 Lambda 표현식을 사용하여 기능적 인터페이스를 구현할 수 있습니다.
MyFunctionalInterface functionalInterface = () ->{ // basic functionality logic goes here }
주석을 사용하거나 인터페이스를 기능적 인터페이스로 선언할 수도 있습니다. 주석을 사용하여 기능적 인터페이스를 선언하는 방법은 다음과 같습니다.
MyFunctionalInterface functionalInterface = () ->{ // basic functionality logic goes here }
@FunctionalInterface는 Java 8에서 도입되었으며 인터페이스가 기능적 인터페이스의 규칙을 위반하는 경우 컴파일러 수준 오류에 사용됩니다. @FunctionalInterface 주석을 사용하여 인터페이스를 선언하면 인터페이스가 작동하게 되며, 두 개 이상의 추상 메서드를 사용하면 컴파일 오류가 발생합니다.
몇 가지 중요한 사항은 다음과 같습니다.
예:
@FunctionalInterface public interface MyFunctionalInterface(){ // abstract method public void functionalMethod(); @Override public boolean equals(Object object); //method overridden from parent class }
위 인터페이스는 상위 클래스의 메서드를 재정의하고 여러 추상 메서드를 선언하지 않으므로 기능적 인터페이스로 간주할 수 있습니다.
이제 Java 기능 인터페이스의 선언 및 사용법을 보여주는 Java 코드 예제를 살펴보겠습니다.
이 예에서는 내장 함수 인터페이스 java.util.function.function 인터페이스가 어떻게 사용되는지 보여줍니다. Function 인터페이스의 선언은 다음과 같습니다.
인터페이스:
package java.util.function; public interface Function<T,R>{ public <R> apply(T inputparams); }
위 인터페이스를 사용하려면 다음과 같이 클래스에 구현해야 합니다.
코드:
import java.util.function.*; public class FunctionalInterfaceDemo implements Function<Integer, Integer>{ @Override public Integer apply (Integer n){ return n*n; } public static void main (String args[]){ FunctionalInterfaceDemo demo = new FunctionalInterfaceDemo (); Integer sqroot= demo.apply(12); System.out.println("Square root of 12 is " + sqroot); } }
출력:
이 예에서는 람다 표현식을 사용하여 이러한 인터페이스가 어떻게 생성되는지 살펴보겠습니다.
코드:
public class FunctionalInterfaceDemo{ public static void main (String args[]){ // creating functional Interface instance Runnable r = () -> {System.out.println ("Executing Thread........");}; new Thread(r).start(); } }
출력:
이 예에서는 목록을 반복하기 위해 또 다른 내장 인터페이스 소비자를 사용하는 방법을 살펴보겠습니다.
코드:
import java.util.function.*; import java.util.*; public class FunctionalInterfaceDemo{ public static void main (String args[]){ List<String> list = new ArrayList<String>(); list.add("One"); list.add("Two"); list.add("Three"); list.add("Four"); list.add("Five"); list.add("Six"); // Iterate arraylist using consumer list.forEach(new Consumer<String>(){ @Override public void accept(String item){ System.out.println(item); } }); } }
출력:
위 기사는 Java의 기능적 인터페이스에 대한 명확한 이해를 제공합니다. Java 8 기능적 인터페이스 사용의 가장 큰 장점은 많은 상용구 코드를 제거하여 결과적으로 작고 효율적이며 깔끔한 코드를 개발할 수 있는 람다 표현식을 지원한다는 것입니다.
위 내용은 Java의 기능적 인터페이스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!