因此,Java 8引入了方法引用和docs describe the four types。
我的问题是两种实例类型之间的区别是什么?
- 引用特定对象的实例方法。
- 引用特定类型的任意对象的实例方法。
醇>
两者都是指参考文献,但有什么显着不同?用于解决它们的类型推断是不同的吗?重要的是(在他们的例子中)一个是闭包而另一个是lambda?是否与方法的参数数量有关?
答案 0 :(得分:15)
1)myString::charAt
将使用int
并返回char
,并且可能用于任何以这种方式工作的lambda。它基本上翻译为index -> myString.charAt(index)
。
2)String::length
将String
并返回int
。它基本上翻译为string -> string.length()
。
我甚至不确定String::charAt
是否会转化为(string, index) -> string.charAt(index)
。不过,我有点期待它。
答案 1 :(得分:3)
这意味着你有以下内容:
1)可以是例如this::someFunction;
,这将返回当前对象的someFunction
引用。
2)可以是String::toUpperCase
,这通常会返回toUpperCase
String
方法。
我不确定行为是否存在实际差异,我认为就像你也可以在实例变量上调用静态方法一样。