下面代码工作
Function fun1= super::equals
Function fun2= Object::hashCode
Run Code Online (Sandbox Code Playgroud)
但是下面的代码不是
Function fun1= Object::equals
Function fun2= super::hashCode
Run Code Online (Sandbox Code Playgroud)
这里的概念是什么,即使所有都是Object类中的实例方法.
我在某处读过校长:
Swe*_*per 11
该Function接口是表示接受一个参数并返回一个值的功能的功能的接口.
super::equals 因为它是一个接受一个参数并返回一个值的函数.
Object::equals不起作用,因为它是一个接受两个参数并返回值的函数.
如果你有一个表单的方法引用ClassName::instanceMethod,它所代表的函数将有一个额外的参数 - 调用该方法的对象.根据文件:
方法引用的等效lambda表达式
String::compareToIgnoreCase将具有形式参数列表(String a, String b),其中a和b是用于更好地描述此示例的任意名称.方法引用将调用该方法a.compareToIgnoreCase(b)
super::equals是instance::instanceMethod这样的形式所以没有问题,并按预期工作.
正确功能的接口类型,使用Object::equals和super::hashCode是BiFunction<Object, Object, Boolean>和IntSupplier.
另外,不要使用原始类型.
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |