On Tue, 17 Oct 2023 12:16:54 GMT, ExE Boss <d...@openjdk.org> wrote:

>> This PR proposes to add a number of "capturing factories" in classes in the 
>> `java.util.function` package.
>> 
>> The PR additionally (an optionally) proposes to add a new function 
>> `UnaryOperator::andThenUnary` to allow composition while retaining the 
>> `UnaryOperator` type.
>> 
>> With the new changes, it is possible to write code like this (example from 
>> `java.util.function.Function`):
>> 
>> 
>> // Resolve ambiguity
>> var function = Function.of(String::isEmpty); // Function<String, Boolean>
>> var predicate = Predicate.of(String::isEmpty); // Predicate<String>
>> 
>> // Fluent composition
>> var chained = Function.of(String::length)       // Function<String, Integer>
>>                    .andThen(Integer::byteValue);      // Function<String, 
>> Byte>
>> 
>> 
>> Please see the original bug report for a comprehensive description of these 
>> proposed changes.
>> 
>> Note: It is not the objective to promote `var` declaration or to prevent 
>> previous ways of capturing lambdas and method references. The comments in 
>> the code above is for explaining the binding and once that becomes obvious, 
>> such comments are likely to not appear in real code. Users that prefers 
>> having a normal type declaration can still do that.
>> 
>> Note: Functional interfaces of primitives have not been considered (in this 
>> round). Otherwise, functional interfaces that might be ambiguous or that 
>> supports composition have been included. Hence, `Supplier` did not get a 
>> factory method.
>
> src/java.base/share/classes/java/util/function/BiConsumer.java line 104:
> 
>> 102:      * @param <U> the type of the second argument to the operation
>> 103:      */
>> 104:     static <T, U> BiConsumer<T, U> of(BiConsumer<T, U> uncaptured) {
> 
> Suggestion:
> 
>     static <T, U> BiConsumer<T, U> of(BiConsumer<? super T, ? super U> 
> uncaptured) {

@ExE-Boss This and all other "enhancements" hardly compile ;-)

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/16213#discussion_r1362076569

Reply via email to