>  기사  >  Java  >  메소드 참조에 대한 혼란

메소드 참조에 대한 혼란

Patricia Arquette
Patricia Arquette원래의
2024-09-23 06:21:14356검색

Confusion Around Method Referencing

Java의 메서드 참조는 명시적으로 호출하지 않고도 메서드나 생성자를 참조하는 방법을 제공합니다. 간단한 람다 표현식을 작성하기 위한 약칭으로 생각할 수 있습니다.

주요 메소드 참조는 정적이거나 인스턴스와 관련될 수 있습니다.

Integer::sum;
System.out::println;

정적 메서드 참조(바운드 참조라고도 함)의 예는 다음과 같습니다.

그러나 다음 사항을 고려하십시오.

String::concat

여기서 concat는 정적 메서드가 아닌데 어떻게 작동하나요? 이는 언바운드 참조의 예입니다. 컴파일러는 이것이 코드 작성 방식에 따른 인스턴스 메서드 참조임을 이해합니다. 이를 통해 이와 같은 메소드 호출을 단순화할 수 있습니다.

코드 작성 방식에 따라 이러한 유형의 참조(특히 바인딩되지 않은 참조)가 결정됩니다. 연결을 예로 들면:

((a, b) -> a + b, "Hello", "World");
// ----------------Is same as -------------
((a, b) -> a.concat(b), "Hello", "World"); // This one could be replaced by mehod referencing

// ----------------Alternative-------------

(String::concat, "Hello", "World");

/* The use of 'a' as the first parameter and calling `concat `of 'a' itself 
gives the compiler an idea of how it should decode `String::concat`*/

따라서 전체 람다를 작성하는 대신 메서드 참조를 사용하여 단순화할 수 있습니다.

계속 배우세요 ?

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

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