Java教程

怎么写 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 回调函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!