sha*_*ran 0 java lambda local-class java-stream method-reference
在我测试时,下面的代码执行没有任何问题.但我无法理解逻辑.有人可以解释一下吗?
public static void main(String[] args) {
List<String> london = new ArrayList<>(Arrays.asList("Chinatown","Croydon","Eden Park"));
class City{
private String name;
City(String name){
this.name = name;
}
public void printCity(){
System.out.println(name);
}
}
london.stream().map(City::new).forEach(City::printCity); //Chinatown,Croydon,Eden Park
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例代码中,我有以下问题.
在您的上一个语句中,您当前使用了方法引用.这可以写成如下:
london.stream().map(name -> new City(name)).forEach(city -> city.printCity());
Run Code Online (Sandbox Code Playgroud)
如您所见,map返回City实例.因此,forEach获取每个实例上的City实例和调用printCity.
使用方法引用时,City::printCity与调用不同City.printCity.请参见方法参考文档
方法引用只是易于阅读的lambda表达式.