>Java >java지도 시간 >메소드 참조

메소드 참조

Linda Hamilton
Linda Hamilton원래의
2025-01-14 08:56:42511검색

Referências de método

  • 개념: 메소드 참조를 사용하면 메소드를 실행하지 않고도 참조할 수 있습니다.

  • 람다 표현식과의 관계: 둘 다 호환되는 기능 인터페이스로 구성된 대상 유형 컨텍스트가 필요합니다.

  • 함수형 인스턴스: 메서드 참조는 평가 시 함수형 인터페이스의 인스턴스를 생성합니다.

정적 메소드에 대한 참조

  • 클래스 이름과 메소드는 JDK 8에서 삽입되는 이중 콜론(::)으로 구분됩니다.

  • 대상 유형과 호환되는 모든 곳에서 사용할 수 있습니다.

정적 메소드 참조 예

  • 기능적 인터페이스:
    이름: IntPredicate
    메소드: test(int 값)
    매개변수: 정수.
    반환: 부울(정수 값에 대한 조건 테스트).

  • 보조수업:
    이름: MyIntPredicates
    구현된 정적 메소드:
    isPrime(): 숫자가 소수인지 확인합니다.
    isEven(): 숫자가 짝수인지 확인합니다.
    isPositive(): 숫자가 양수인지 확인합니다.

  • 주요 방법:
    이름: numTest()
    매개변수:
    IntPredicate.
    인터페이스에 대한 참조 테스트 중인 정수입니다.

  • 실행:
    main() 메서드에서는 numTest()를 사용하여 세 가지 테스트를 수행합니다.
    각 테스트마다 특정 메소드 참조(isPrime, isEven, isPositive)가 실행 인수로 전달됩니다.

// 정적 메서드에 대한 참조를 보여줍니다.
//
로 작동하는 숫자 술어에 대한 기능적 인터페이스 // 정수 값.
인터페이스 IntPredicate {
부울 테스트(int n);
}
// 이 클래스는 정수를 확인하는 세 가지 정적 메서드를 정의합니다
// 어떤 조건과 관련하여.
클래스 MyIntPredicates {
// 숫자가 소수일 때 true를 반환하는 정적 메서드입니다.
static boolean isPrime(int n) {
if(n for(int i=2; i <= n/i; i ) {
if((n % i) == 0)
false를 반환합니다.
}
true를 반환합니다.
}
// 짝수일 때 true를 반환하는 정적 메소드입니다.
정적 부울 isEven(int n) {
반환 (n % 2) == 0;
}
// 숫자가 양수일 때 true를 반환하는 정적 메서드입니다.
static boolean isPositive(int n) {
n > 0;
}
}
클래스 MethodRefDemo {
// 이 메소드는 해당 유형으로 기능적 인터페이스를 갖습니다
// 첫 번째 매개변수. 따라서
에 대한 참고자료를 받으실 수 있습니다. // 생성된 인터페이스를 포함하여 이 인터페이스의 모든 인스턴스
// 메소드 참조로
static boolean numTest(IntPredicate p, int v) {
return p.test(v);
}
공개 정적 무효 메인(문자열 인수[])
{
부울 결과;
// 여기서는 isPrime 메소드에 대한 참조가 numTest()에 전달됩니다.
결과 = numTest(MyIntPredicates::isPrime, 17);
if(result) System.out.println("17은 소수입니다.");
// 그런 다음 isEven 메소드에 대한 참조가 사용됩니다.
결과 = numTest(MyIntPredicates::isEven, 12);
if(result) System.out.println("12는 짝수입니다.");
// 이제 isPositive 메소드에 대한 참조가 전달됩니다.
결과 = numTest(MyIntPredicates::isPositive, 11);
if(result) System.out.println("11은 양수입니다.");
}
}

  • 정적 메서드 isPrime()에 대한 참조는 numTest() 메서드에 인수로 전달됩니다.

  • isPrime() 메소드는 IntPredicate 기능 인터페이스와 호환됩니다.

  • MyIntPredicates::isPrime 표현식은 isPrime()이 IntPredicate의 test() 메서드를 구현하는 참조를 생성합니다.

  • numTest()에 대한 다른 호출은 동일한 호환성 및 작동 원리를 따릅니다.

  • 부울 서명 test(int n)가 있는 모든 메소드는 IntPredicate 인터페이스에 대한 참조로 사용될 수 있습니다.

위 내용은 메소드 참조의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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