我上课了
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);