下面的代码中有一条语句:.toArray(Bicycle [] :: new)。等于该语句的Lambda是多少?
我检查了toArray接收到IntFunction的实现。如果我理解正确,那么IntFunction是一个接口函数,该接口函数具有一个apply方法,该方法可以接收一个int并返回Bicycle []。我不知道尝试装载等效的Lambda会收到什么int。
package br.com.testes;
import java.util.Arrays;
import java.util.List;
public class TesteMethodReference {
public static void main(String[] args) {
List<String> bikeBrands = Arrays.asList("Giant", "Scott", "Trek", "GT");
Bicycle[] bicycles = bikeBrands.stream()
.map(Bicycle::new) //the same .map((brand) -> new Bicycle(brand))
.toArray(Bicycle[]::new); //WHAT IS THE LAMBDA EQUIVALENT?
System.out.println(Arrays.deepToString(bicycles));
}
}
class Bicycle {
private String brand;
public Bicycle(String brand) {
this.brand = brand;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
@Override
public String toString() {
return "Bicycle [brand=" + brand + "]";
}
}
有人可以帮我理解吗?
谢谢
答案 0 :(得分:1)
<A> A[] toArray(IntFunction<A[]> generator)
文档中的API注释
生成器函数接受一个整数,它是大小 所需的数组,然后生成所需大小的数组。
也等同于Bergi在评论中指出的内容:
.toArray(size -> new Bicycle[size])