怎么写 Java 回调函数
作者:互联网
JavaScript 中的回调函数
回调函数在 JavaScript 中经常用到,回调函数可以提升我们这一个函数的重用率,降低代码冗余的问题。
JavaScript 定义回调函数简单,在函数中的参数里面直接添加一个函数,函数拿到这个变量之后加上小括号即可执行函数:
// 定义函数,第二个参数是回调函数,回调函数接收一个参数
function write(something, callable) {
callable("Hello Callable");
}
// 使用函数,第二个回调函数接收参数,打印其参数
write('eat bread', function (s) {
console.log(s);
})
在回调函数内,除了write
函数本身应该做的固定任务以外,回调函数里面可以根据业务不同实现不同的任务,这样就可以提升我们函数的重用率,也降低了代码冗余的问题。
Java 中的回调函数
Java 也是有回调函数的,回调函数的定义和好处跟 JavaScript 的回调函数一样。Java 定义回调函数可能有点“复杂”。
回调函数本身就允许我们程序员根据业务不同需求来,所以,在 Java 中接口就是非常适合作为回调函数的承担者。接口的函数需要我们去“实现”,也就是这个实现可以根据我们使用场景自定义。
我通过一个 I/O 流实现回调函数使用的案例:
定义回调函数接口
interface WriteTextCallable {
void append(FileWriter fw);
}
调用回调函数
public class WriteText {
public void write(String filename, WriteTextCallable writeTextCallable) {
FileWriter fw;
try {
fw = new FileWriter(filename, true);
writeTextCallable.append(fw);
fw.flush();
fw.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
除了writeTextCallable.append(fw);
要实现实际给文件写入内容以外,其他代码都是固定的,无非就是打开输出流,关闭输出流的操作。只有写入的内容,根据业务场景,发生变化而已,所以在这里使用回调函数代替执行,而不影响我们的固定操作。
测试回调函数
public static void main(String[] args) {
WriteText wt = new WriteText();
wt.write("E:\\Common\\Document\\Person\\fw.txt", fw -> {
try {
fw.write("\n");
fw.write("时间:" + new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒").format(new Date()));
fw.write("\n");
fw.write("事情:打豆豆");
fw.write("\n");
fw.write("-----------------");
} catch (IOException e) {
throw new RuntimeException(e);
}
});
}
标签:Java,函数,fw,write,new,回调 来源: https://www.cnblogs.com/shiramashiro/p/16424285.html