编程语言
首页 > 编程语言> > 怎么写 Java 回调函数

怎么写 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