【发布时间】:2021-04-23 02:57:36
【问题描述】:
我正在尝试从 Oracle Learning on Lambdas and Method References 中理解这个示例代码:
String city = "Munich";
Supplier<String> lambda = city::toUpperCase;
System.out.println(lambda.get());
他们为什么不直接打电话
city.toUpperCase();
这个方法不是和具体的实例变量city绑定的吗?
那么它将如何在不同的上下文中执行以提供 lambdas 的好处 - 我无法理解。
【问题讨论】:
-
问题不应该是,他们为什么不一开始就写
"MUNICH"? -
@Holger 欢迎您提出这个问题。
-
我想,这有助于理解example的原理。在示例中,字符串是
"Munich",您可以首先写"MUNICH"。但是当你有一个 arbitrary 字符串时,你可以通过调用city.toUpperCase()将它转换为大写。同样,在示例中,供应商是对city的toUpperCase调用,您可以首先编写city.toUpperCase()或"MUNICH"。但是当您有一个任意供应商时,您可以致电get()请求结果。考虑当方法的参数是String city或Supplier<String> s时会发生什么...
标签: java java-8 method-reference