我试图更好地理解方法引用是如何工作的。在这个例子中,我遵循了代码的逻辑,但我不明白这样做的价值。基本上,在 STEP 2 中的方法引用赋值之后,someMethod() 被用作 MyInterface 的 display() 抽象方法的实现。但为什么呢?这样做我们得到了什么?这在架构上什么时候有意义?好像我们把与类无关的Interface和这个赋值关联起来。
@FunctionalInterface
interface MyInterface {
void display();
}
class DerivClass {
public void someMethod(){
System.out.println("Derived class method");
}
}
public class RefTest {
public static void main(String[] args) {
DerivClass dc = new DerivClass(); // STEP1: class instance
MyInterface myInterf = dc::someMethod; // STEP 2: assign method ref to interface
myInterf.display(); // STEP 3: executes someMethod(), prints "Derived class method"
}
}
Run Code Online (Sandbox Code Playgroud)