Java接口与回调方法
有人能解释一下这个代码背后的概念吗?我不知道该搜索什么或从哪里开始?我想了解更多关于这种编程的信息
private static interface A {
void apply(String name, int i, int j);
}
private final A method_A = (name, i, j) -> methodOne(name, i, j);
private final A method_B = (name, i, j) -> methodTwo(name, i, j);
public void methodOne(String name, int i, int j){
// do something
}
public void methodTwo(String name, int i, int j){
// do some other thing
}
谢谢
# 1 楼答案
您的代码实际上可以简化为:
两个变量
method_A
和method_B
只是A
类型的正则变量。关于这一点,真正特别的是你给变量赋值-this::methodOne
我假设您对类和接口以及它们的实例如何工作有一些了解。如果没有,先学习这些东西
A
只有一个方法,所以可以将其视为“存储”方法的类型。我会解释原因在Java 8之前,您可以编写如下内容:
创建的匿名类只有
apply
方法。看见method_A
对象不是只存储一个方法的实现吗从Java 8开始,您可以编写以下lambda表达式:
正如你现在可能猜到的,这都是语法上的甜点。你基本上是说
method_A
将存储methdOne
。然后你可以传递method_A
,你实际上是在传递一个方法的实现新的stream API利用了这一点,并允许您执行以下操作: