gpt4 book ai didi

java - 具有 Lambda 表达式的本地类

转载 作者:行者123 更新时间:2023-12-01 07:18:30 24 4
gpt4 key购买 nike

根据我的测试,下面的代码执行没有任何问题。但我无法理解其中的逻辑。有人可以解释一下吗?

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
}

在上面的示例代码中,我有以下问题。

  1. foreach 方法始终采用消费者对象。在这里 printCity 方法不是一个带有参数的方法。仍然有效。怎么办?
  2. printCity 方法在这里不是静态方法。城市本身如何调用实例方法?

最佳答案

在上一个语句中,您当前使用了方法引用。这也可以写成如下:

london.stream().map(name -> new City(name)).forEach(city -> city.printCity());

如上所示,map 返回 City 实例。因此,forEach 获取 City 实例并在每个实例上调用 printCity

使用方法引用时,City::printCity 与调用 City.printCity 不同。请参阅Method References documentation

Method references are just easy-to-read lambda expressions.

关于java - 具有 Lambda 表达式的本地类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48877304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com