引用方法有3种构造:
object::instanceMethod
Class::staticMethod
Class::instanceMethod
该行:
Capitalizer c = String::toUpperCase; //This works
使用3’rd结构-
Class::instanceMethod。在这种情况下, 第一个参数成为该方法的目标
。此构造等效于(翻译)以下Lambda:
Capitalizer = (String x) -> x.toUpperCase();
这Lambda表达式工作,因为拉姆达 得到String
的参数,并返回String
结果-所要求的Capitalizer
接口。
该行:
c = Main::toUpperCase; //Compile error
转换为:
(Main m) -> m.toUpperCase();
哪个不适用于该
Capitalizer界面。您可以更改
Capitalizer为:
interface Capitalizer { public String capitalize(Main name);}此更改
Main::toUpperCase后将进行编译。



