简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门实战课【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
🍉🍉🍉文章目录🍉🍉🍉
- 🌻1.前言
- 🌻2.Java回调函数介绍
- 🌻3.代码实例
- 🐓3.1 基础
- 🐓3.2 增加类中实现
- 🐓3.3 匿名类调用回调
- 🐓3.4 增加注册回调接口
- 🐓3.5 增加注销回调接口
🌻1.前言
本篇目的:Java
🌻2.Java回调函数介绍
- Java回调函数是一种在Java编程语言中实现特定功能的技术。回调函数允许一个函数作为参数传递给另一个函数,以便在需要时调用它。这种技术在事件处理、异步编程和网络编程中非常有用。
- 在Java中,回调函数通常通过接口实现。首先,定义一个接口,其中包含回调方法。然后,创建一个实现了该接口的类,并在该类中实现回调方法。最后,将实现了接口的类的对象作为参数传递给另一个函数,以便在需要时调用回调方法。
- 举个例子,假设我们想要在用户点击按钮时执行一些操作。我们可以定义一个名为OnClickListener的接口,其中包含一个名为onClick的方法。然后,我们可以创建一个实现了OnClickListener接口的类,并在该类中实现onClick方法。最后,我们将实现了OnClickListener接口的类的对象作为参数传递给按钮的setOnClickListener方法,以便在用户点击按钮时调用onClick方法。
- 这个例子展示了Java回调函数的基本用法。通过使用回调函数,我们可以在用户点击按钮时执行特定的操作,而不需要修改按钮的类。这使得我们的代码更加模块化和可维护。
- 除了在用户界面编程中使用回调函数外,它们还可以在异步编程和网络编程中使用。在异步编程中,回调函数可以在耗时操作完成时通知主线程。在网络编程中,回调函数可以在接收到网络响应时处理数据。
- 总之,Java回调函数是一种非常有用的技术,它可以帮助我们实现特定功能,而无需修改现有代码。通过使用接口和实现了接口的类,我们可以将回调函数作为参数传递给其他函数,以便在需要时调用它们。这使得我们的代码更加模块化和可维护,同时也提高了代码的可读性和可维护性。
🌻3.代码实例
🐓3.1 基础
//1.定义一个回调接口
interface Callback {void send(String result, int num);
}//2.实现一个接口(一个篮子)
class LocalCallback implements Callback {public void send(String result, int num) {System.out.println("result = " + result + ", num = " + num);}
}public class Callback03 {public static void main(String[] args) {LocalCallback callback = new LocalCallback();//将数据给实现interface的接口(将数据)callback.send("Hello Callback!", 20);}
}
🐓3.2 增加类中实现
//1.定义一个回调接口
interface Callback {void send(String result, int num);
}//2.谁需要数据,谁实现Callback接口即可,这里是由LocalCallback来实现
class LocalCallback implements Callback {@Overridepublic void send(String result, int num) {System.out.println("result = " + result + ", num = " + num);}
}class Task {public Callback mcallback;//1.注册回调函数void register(Callback callback){mcallback = callback;}//2.给用户实现Callback接口的LocalCallback传回调数据void send(String data, int num){mcallback.send(data, num);}
}public class Callback04 {public static void main(String[] args) {//1.回调接口实现LocalCallback callback = new LocalCallback();//2.创建任务Task task = new Task();//3.注册回调函数,本质将接口类LocalCallback的地址传给mcallbacktask.register(callback);String data = "Hello Callback";int num = 20;//4.调用回调函数task.send(data, num);}
}
🐓3.3 匿名类调用回调
// 定义一个回调接口
interface Callback {void send(String result, int num);
}class Task1 {void execute(Callback callback){callback.send("Hello Callback!", 20);}
}public class Callback05 {public static void main(String[] args) {Task1 task1 = new Task1();//匿名类实现task1.execute(new Callback() {@Overridepublic void send(String result, int num) {System.out.println("result = " + result + ", num = " + num);}});}
}
🐓3.4 增加注册回调接口
javac Callback07.java
java Callback07
//1.定义一个回调接口
interface Callback {void send(String result, int num, String name);
}//2.谁需要数据,谁实现Callback接口即可,这里是由LocalCallback来实现
class LocalCallback implements Callback {@Overridepublic void send(String result, int num, String name) {System.out.println("result = " + result + ", num = " + num + ", name = " + name);}
}class Task {public Callback mcallback;//1.注册回调函数void register(Callback callback){mcallback = callback;}//2.给用户实现Callback接口的LocalCallback传回调数据void send(String data, int num, String name){mcallback.send(data, num, name);}
}public class Callback07 {public static void main(String[] args) {//1.回调接口实现LocalCallback callback = new LocalCallback();//2.创建任务Task task = new Task();//3.注册回调函数,本质将接口类LocalCallback的地址传给mcallbacktask.register(callback);String data = "Hello Callback";String name = "JIM";int num = 20;//4.调用回调函数task.send(data, num, name);}
}
🐓3.5 增加注销回调接口
javac Callback07.java
java Callback07
//1.定义一个回调接口
interface Callback {void send(String result, int num, String name);
}//2.谁需要数据,谁实现Callback接口即可,这里是由LocalCallback来实现
class LocalCallback implements Callback {@Overridepublic void send(String result, int num, String name) {System.out.println("result = " + result + ", num = " + num + ", name = " + name);}
}class Task {public Callback mcallback;//1.注册回调函数void register(Callback callback){mcallback = callback;}void unregister(){mcallback = null;}//2.给用户实现Callback接口的LocalCallback传回调数据void send(String data, int num, String name){mcallback.send(data, num, name);}
}public class Callback07 {public static void main(String[] args) {//1.回调接口实现LocalCallback callback = new LocalCallback();//2.创建任务Task task = new Task();//3.注册回调函数,本质将接口类LocalCallback的地址传给mcallbacktask.register(callback);String data = "Hello Callback";String name = "JIM";int num = 20;//4.调用回调函数task.send(data, num, name);//5.注销回调task.unregister(); }
}