我上课了
public class Person { private int age; }
在java 8中使用Supplier,我可以存储构造函数引用
Supplier<Person> personSupplier = Person::new
但是,如果我的构造函数接受参数年龄如此
public class Person { private int age; public Person(int age) {this.age = age;} }
现在
Supplier<Person> personSupplier = Person::new
不起作用,那么personSupplier的签名应该是什么?显然我可以做点什么.
Supplier<Person> personSupplier = () -> new Person(10);
但是每个人的年龄必须不同,所以它不能解决我的问题.
可能我应该使用其他东西而不是供应商?
解决方法
您可以在Java中使用java.util.function.Function并在调用apply时提供年龄.
例如.
Function<Integer,Person> personSupplier = Person::new; Person p1 = personSupplier.apply(10); Person p2 = personSupplier.apply(20);
这相当于
Function<Integer,Person> personSupplier = (age) -> new Person(age); Person p1 = personSupplier.apply(10); Person p2 = personSupplier.apply(20);