<分区>
此代码使用对特定对象的实例方法的方法引用:
public class Main {
public static void main(String[] args) {
One one=new One();
// F f = ()->{one.bar();}; //previous wrong syntax
F f = one::bar; //4
f.foo();
}
}
class One{void bar(){}}
interface F{void foo();}
我知道它有效。但我无法理解为什么和如何。
我无法理解的是 F.foo()
方法怎么可能使用对对象的引用,而该对象不是方法本身的参数(签名不是 void foo(一一)
)。
我在第 4 行
- 创建实现
F
接口(interface)的类的实例 - 通过引用
one
调用bar()
方法实现方法
但是 foo()
怎么能在 one
引用上有作用域呢?尝试将此解决方案转换为“传统的、明确的实现”是不是我错了?如果不是,它会是什么“明确对应物”?