람다 비교: 구현 및 해석
문제:
주어진 객체 목록 람다 표현식을 사용하여 정의된 경우 동일한지 검사하고 비교할 수 있습니까?
구현 고려 사항:
구현 관점에서 비캡처 람다가 동시에 평가됩니다. 캡처 사이트는 참조 동등성을 사용하여 비교할 수 있는 동일한 인스턴스를 생성합니다. 그러나 서로 다른 사이트에서 캡처된 고유한 람다 식은 서로 다른 합성 클래스에 매핑될 수 있습니다.
사양 의미:
언어 사양은 람다 식 평가 결과만 보장합니다. 대상 기능 인터페이스의 인스턴스입니다. 결과의 ID나 별칭을 지정하지 않습니다. 이러한 유연성을 통해 구현에서는 각 람다 평가에 대해 고유한 인스턴스를 생성하지 않음으로써 성능을 최적화할 수 있습니다.
메서드 참조 동일성:
메서드 참조는 정의를 조정하기 위한 실용적인 시나리오를 제공할 수 있습니다. 청취자로의 사용을 지원하는 평등성. 이는 향후 개정을 위해 고려 중입니다.
심층 평가:
두 람다의 동등성을 결정하려면 동작 함수, 캡처된 인수 및 기능적 인터페이스를 비교해야 합니다. 로 변환됩니다. 그러나 직렬화할 수 없는 람다에 대해 이 정보를 얻는 것은 어려울 수 있습니다.
디자인 결정:
Java Expert Group은 람다 동등 비교를 위해 정보를 노출하는 것은 가치가 없다고 결론지었습니다. 대부분의 사용자에 대한 성능 저하. 그러나 toString() 표현 개선의 가능성은 향후 논의의 여지가 남아 있습니다.
위 내용은 Java에서 람다를 동등하게 비교할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!