Java 8 中的实例方法引用类型之间有什么区别?
2022-09-01 21:13:15
因此,Java 8 引入了方法参考,文档描述了这四种类型。
我的问题是这两种实例类型之间有什么区别?
- 对特定对象的实例方法的引用。
- 对特定类型的任意对象的实例方法的引用。
两者都是指参考文献,但有什么显着的不同?是不是用于解析它们的类型推断不同?(在他们的例子中)一个是闭包,另一个是lambda,这有意义吗?它是否与方法上的参数数量有关?
因此,Java 8 引入了方法参考,文档描述了这四种类型。
我的问题是这两种实例类型之间有什么区别?
- 对特定对象的实例方法的引用。
- 对特定类型的任意对象的实例方法的引用。
两者都是指参考文献,但有什么显着的不同?是不是用于解析它们的类型推断不同?(在他们的例子中)一个是闭包,另一个是lambda,这有意义吗?它是否与方法上的参数数量有关?
myString::charAt
将采用 a 并返回 a ,并且可能用于任何以这种方式工作的 lambda。从本质上讲,它转换为 .int
char
index -> myString.charAt(index)
String::length
将采取 a 并返回一个 .从本质上讲,它转换为 .String
int
string -> string.length()
String::charAt
将转换为 .(string, index) -> string.charAt(index)
有了这个,他们意味着你有以下几点:
1) 例如,这将返回当前对象的引用。this::someFunction;
someFunction
2)可以例如,这将返回一般的方法。String::toUpperCase
toUpperCase
String
我不确定行为上是否存在实际差异,我认为这就像您也可以在实例变量上调用静态方法一样。