Java에서는 메서드 참조를 사용하여 기능적 인터페이스를 만들 수 있습니다. 예를 들어 Consumer 인터페이스는 단일 인수를 사용하여 이에 대한 작업을 수행합니다. 놀랍게도 반환 유형이 있는 메서드 참조는 소비자 인터페이스와도 일치할 수 있습니다.
이 동작을 허용하기로 한 결정은 메서드를 호출하는 방식과 유사한 방식으로 기능적 인터페이스에 메서드를 적용한다는 아이디어에 기반을 두고 있습니다. 특히 반환 값이 무시되더라도 모든 값 반환 메서드를 소비자 인터페이스에 적용할 수 있습니다.
람다 식에는 (args) -> 표현식 및 (args) -> { 진술* }. 코드 경로가 값을 반환하려고 시도하지 않는 경우 후자 형식은 void 호환 가능합니다. 표현식이 값으로 평가되는 경우 전자 형식은 값 호환 가능합니다. 그러나 표현식이 명령문(예: 메소드 호출 또는 증가/감소 연산자)인 경우 void 호환 가능합니다.
예를 들어 표현식 s -> s는 값 호환이 가능한 반면 s -> i는 무효 호환됩니다. 증가/감소 연산자가 그 자체로 명령문으로 사용될 수 있기 때문입니다. 또 다른 void 호환 표현식은 s -> new Everything(s), 클래스 인스턴스 생성 표현식을 명령문으로 사용할 수도 있습니다.
흥미롭게도 (arg) -> methodReturningVoid(arg)는 값과 호환되지 않는 유일한 표현식 형식입니다.
위 내용은 반환 유형이 있는 메소드 참조가 Java에서 소비자 인터페이스를 구현할 수 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!