> Java > java지도 시간 > 일반 기능 인터페이스

일반 기능 인터페이스

Mary-Kate Olsen
풀어 주다: 2025-01-12 09:30:46
원래의
441명이 탐색했습니다.

Interfaces Funcionais Genéricas

주요 개념

  • 람다 표현식은 일반 표현식일 수 없습니다. 람다 표현식에서 유형 매개변수를 직접 지정할 수 없습니다.
  • 기능적 인터페이스는 일반적일 수 있습니다. 람다 식의 대상 유형은 기능적 인터페이스 참조에 지정된 유형 인수에 따라 결정됩니다.
  • 코드 재사용: 일반 인터페이스를 사용하면 다양한 유형의 데이터에 대해 여러 기능 인터페이스를 만들 필요가 없으므로 다양한 유형의 로직을 재사용할 수 있습니다.

실제 예: SomeTest 일반 기능 인터페이스
SomeTest 일반 인터페이스를 사용하여 다양한 유형(예: Integer, Double, String)으로 람다를 구현할 수 있습니다.

코드

// Interface funcional genérica com dois parâmetros que retorna um boolean
interface SomeTest<T> {
    boolean test(T n, T m);
}

public class GenericFunctionalInterfaceDemo {
    public static void main(String[] args) {
        // Expressão lambda para verificar se um inteiro é fator de outro
        SomeTest<Integer> isFactor = (n, d) -> (n % d) == 0;
        if (isFactor.test(10, 2)) {
            System.out.println("2 is a factor of 10");
        }

        // Expressão lambda para verificar se um Double é fator de outro
        SomeTest<Double> isFactorD = (n, d) -> (n % d) == 0;
        if (isFactorD.test(212.0, 4.0)) {
            System.out.println("4.0 is a factor of 212.0");
        }

        // Expressão lambda para verificar se uma string faz parte de outra
        SomeTest<String> isIn = (a, b) -> a.indexOf(b) != -1;
        String str = "Generic Functional Interface";
        System.out.println("Testing string: " + str);
        if (isIn.test(str, "face")) {
            System.out.println("'face' is found.");
        } else {
            System.out.println("'face' not found.");
        }
    }
}

로그인 후 복사

나가기

2 is a factor of 10
4.0 is a factor of 212.0
Testing string: Generic Functional Interface
'face' is found.

로그인 후 복사

예제 설명
일반 인터페이스 정의:

interface SomeTest<T> {
    boolean test(T n, T m);
}

로그인 후 복사

T는 특정 유형(Integer, Double, String 등)으로 대체될 일반 유형입니다.

람다 표현식 사용:

  • 첫 번째 람다(isFactor)는 정수가 다른 정수로 나누어지는지 여부를 확인합니다.
  • 두 번째 람다(isFactorD)는 동일한 작업을 수행하지만 숫자는 Double 유형입니다.
  • 세 번째 람다(isIn)는 문자열에 다른 문자열이 포함되어 있는지 확인합니다.

동일한 인터페이스 재사용:
SomeTest 인터페이스는 다양한 데이터 유형(Integer, Double, String)과 함께 사용되어 제네릭의 유연성을 보여줍니다.

일반 기능 인터페이스의 이점

  • 중복 코드 감소: 단일 일반 인터페이스가 여러 특정 인터페이스를 대체합니다.
  • 유연성: 동일한 논리적 동작으로 다양한 유형의 데이터에 적응.
  • 람다 표현식과의 호환성: 재사용 가능하고 더욱 간결한 람다를 구축할 수 있습니다.

추천 운동
앞서 언급한 NumericFunc 기능적 인터페이스를 일반 인터페이스로 다시 디자인하십시오. 숫자의 제곱을 계산하거나 숫자가 짝수인지 확인하는 등의 작업을 수행하는 데 사용합니다.

전체 예: NumericFunc를 일반으로 리팩터링

// Interface funcional genérica com um parâmetro e um retorno
interface NumericFunc<T> {
    T apply(T n);
}

public class GenericNumericFuncDemo {
    public static void main(String[] args) {
        // Lambda para calcular o quadrado de um número inteiro
        NumericFunc<Integer> square = (n) -> n * n;
        System.out.println("Quadrado de 5: " + square.apply(5)); // Saída: 25

        // Lambda para calcular o quadrado de um número Double
        NumericFunc<Double> squareDouble = (n) -> n * n;
        System.out.println("Quadrado de 3.14: " + squareDouble.apply(3.14)); // Saída: 9.8596

        // Lambda para verificar se um número é par (retorna "Par" ou "Ímpar")
        NumericFunc<Integer> isEven = (n) -> (n % 2 == 0) ? n  :  -1;
        System.out.println("Resultado Numero pares de : Resultado com multiplos valores "  + isEven.apply(15)) ;

    }
}

로그인 후 복사

출력:

Quadrado de 5: 25
Quadrado de 3.14: 9.8596
Resultado Número pares de : Resultado com múltiplos valores -1
로그인 후 복사

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

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿