>  기사  >  Java  >  Java의 기능적 인터페이스

Java의 기능적 인터페이스

王林
王林원래의
2024-08-30 16:04:14540검색

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 주석을 함수 인터페이스와 함께 사용하지 않는 경우 두 개 이상의 추상 메서드를 선언할 수 있지만 이 경우 해당 인터페이스는 기능하지 않는 것으로 간주됩니다.
  • @FunctionalInterface 주석 사용은 선택 사항입니다. 컴파일러 수준 검사에만 사용됩니다.
  • 기능적 인터페이스에는 정적 메소드와 기본 메소드가 얼마든지 포함될 수 있습니다.
  • 상위 클래스의 메서드를 재정의해도 기능적 인터페이스의 규칙을 어기지 않습니다.

예:

@FunctionalInterface
public interface MyFunctionalInterface(){
// abstract method
public void functionalMethod();
@Override
public boolean equals(Object object);
//method overridden from parent class
}

위 인터페이스는 상위 클래스의 메서드를 재정의하고 여러 추상 메서드를 선언하지 않으므로 기능적 인터페이스로 간주할 수 있습니다.

기능적 인터페이스 구현 예

이제 Java 기능 인터페이스의 선언 및 사용법을 보여주는 Java 코드 예제를 살펴보겠습니다.

예시 #1

이 예에서는 내장 함수 인터페이스 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);
}
}

출력:

Java의 기능적 인터페이스

예시 #2

이 예에서는 람다 표현식을 사용하여 이러한 인터페이스가 어떻게 생성되는지 살펴보겠습니다.

코드:

public class FunctionalInterfaceDemo{
public static void main (String args[]){
// creating functional Interface instance
Runnable r = () -> {System.out.println ("Executing Thread........");};
new Thread(r).start();
}
}

출력:

Java의 기능적 인터페이스

예시 #3

이 예에서는 목록을 반복하기 위해 또 다른 내장 인터페이스 소비자를 사용하는 방법을 살펴보겠습니다.

코드:

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의 기능적 인터페이스에 대한 명확한 이해를 제공합니다. Java 8 기능적 인터페이스 사용의 가장 큰 장점은 많은 상용구 코드를 제거하여 결과적으로 작고 효율적이며 깔끔한 코드를 개발할 수 있는 람다 표현식을 지원한다는 것입니다.

위 내용은 Java의 기능적 인터페이스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Java의 클래스로더다음 기사:Java의 클래스로더