Lambda 표현식과 메서드 참조는 Java에서 기능 인터페이스를 정의하는 대체 방법을 제공합니다. 그러나 Consumer의 accept 메소드에 void 반환 유형이 있음에도 불구하고 반환 유형이 있는 메소드 참조가 Consumer 인터페이스와 일치하는 것처럼 보이면 혼란이 발생합니다.
Brian Goetz가 설명하듯이, 이 동작은 의도적인 것입니다. 이를 통해 개발자는 메서드를 직접 호출하는 것과 동일한 방식으로 기능적 인터페이스에 메서드를 적용할 수 있습니다. 따라서 반환 값을 무시하고 값 반환 메서드를 Consumer 인터페이스와 함께 사용할 수 있습니다.
Lambda 표현식은 두 가지 형식을 취할 수 있습니다.
메서드 참조는 기능적 인터페이스를 정의하는 또 다른 방법입니다. 그러나 모든 메서드를 Consumer의 메서드 참조로 사용할 수 있는 것은 아닙니다. 특히:
값과 호환되지 않는 유일한 표현식 형식은 (arg) -> methodReturningVoid(arg). 값을 반환하지 않기 때문이다.
Consumer와 메서드 참조의 호환성은 반환 유형과 표현식을 문으로 사용할 수 있는지 여부에 따라 달라집니다. 이 개념을 이해하면 람다 및 메소드 참조가 Java의 기능적 인터페이스와 상호 작용하는 방식을 명확히 하는 데 도움이 됩니다.
위 내용은 반환 유형이 있는 메소드를 Java의 소비자 인터페이스와 함께 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!