关于在lambda里调用实例方法
Topic source大致明白了,这样调用并没有真正创建一个新的String,而只是调用了它的方法
https://www.jianshu.com/p/b8b7fbf7c4a7
前两种方式是将FI的实参,作为lambda方法的实参来使用
而第三种,FI的实参,是作为lambda方法的调用者来使用
但是它又说
对于被调用的方法而言不能有参数
可是String.compareTo(String anotherString)是有参数的,却可以。这又是怎么回事?
你就这么想吧,系统在调用函数式接口当中唯一的抽象方法时,会自动将第一个调用参数作为实例方法的调用者,剩余的调用参数会作为实例方法的实参。
当在调用一个对象的实例方法,而该对象本身是Lambda的一个参数,这种情况下就考虑使用这种指向任意类型的实例方法的方法引用
- 1
SNH48-刘慈欣
这里面,
String::compareTo
调用的是哪个对象的实例方法呢?或者说,这个this
指向的是哪一个对象呢?