But, a 1-arg constructor for T that takes a String is compatible with Function<String,T>:
Function<String, Foo> fooSupplier = Foo::new;
Which constructor is selected is treated as an overload selection problem, based on the shape of the target type.