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 중국어 웹사이트의 기타 관련 기사를 참조하세요!