Java 8 构造函数中包含参数的供应商

为什么供应商只支持无参数构造函数?

如果默认构造函数存在,我可以这样做:

create(Foo::new)

但是,如果唯一的构造函数需要一个字符串,我必须这样做:

create(() -> new Foo("hello"))

答案 1

但是,采用 a 的 1-arg 构造函数与 兼容:TStringFunction<String,T>

Function<String, Foo> fooSupplier = Foo::new;

根据目标类型的形状,选择哪个构造函数被视为重载选择问题。


答案 2

这只是方法引用语法的一个限制 - 您无法传入任何参数。这就是语法的工作原理。