以下是两种典型用法,方法2如同js随便绑回调函数,推荐
public class CCCC {
// 定义一个回调接口
//@FunctionalInterface
private interface Callback {
void call(int a,int b);
}
public static void main(String[] args) {
// 方法1:使用匿名内部类实现回调接口
processData(10, (a, b) -> {
System.out.println("1处理后的数据是: " + (a+b));
});
// 方法2:使用方法引用(Java 8及以上),推荐
processData(10,CCCC::myCallbackMethod);
}
// 一个处理数据并接受回调函数的方法
private static void processData(int data, Callback callback) {
int processedData = data * 2; // 假设数据处理是将数据乘以2
//...
// 数据处理完成后,调用回调函数
callback.call(processedData, processedData+1);
//...
}
private static void myCallbackMethod(int a,int b) { //参数要跟接口对上
System.out.println("2处理后的数据是: " + (a+b));
}
}
方法2的要点就是:回调函数与接口函数的形参一致——参数类型按次序必须一样,参数名字可以不同