基于Java接口回调详解
作者:iteen 发布时间:2023-11-09 00:03:11
标签:Java,接口,回调
Java接口回调
产生接口回调的场景
在现实生活中,产生接口回调的场景很简单,比如我主动叫你帮我做一件事,然后你做完这件事之后会通知我,"通知我"这个动作就是接口回调的动作.接口回调重在理解思就好.再举个例子用于下面的代码演示,老师让学生做课堂练习,学生做完练习后并告诉老师.
什么是接口回调
在Java的层面简单的说一下接口回调:现有一个接口A,和它的实现类A1,和另外一个有接口A引用的类B,因为类B中有接口A的引用,在B执行完方法后,可以通过接口A的引用,告诉A执行完成了这个方法.由于A是一个接口,所以具体接收执行完成这个方法在它是实现类A1中体现.
在代码中的使用
以上面老师叫学生做课堂作业为例,我们先创建一个回调接口,以及用于接收学生做完课堂作业的消息
public interface BackInterface {
void backMethod();
}
然后定义一个实现类Teacher,功能是让学生做课堂练习,接收学生做完课堂练习的通知
public class Teacher implements BackInterface {
//因为老师要告诉学生做课堂练习,所以这个传一个学生的引用
private Student student;
public Teacher(Student student){
this.student = student;
}
//老师告诉学生做课堂练习
public void doEvent(){
System.out.println("老师让学生做练习...");
student.doPractice(this);
}
//用于接收接口回调的消息
@Override
public void backMethod() {
System.out.println("老师接收到学生做完课堂练习的消息");
}
}
学生类,功能是做练习,做完之后并告诉老师(回调)
public class Student {
//学生做课堂练习,并告诉老师
public void doPractice(BackInterface BackInterface) {
System.out.println("学生做练习...");
System.out.println("学生告诉老师做完练习...");
BackInterface.backMethod();
}
}
进行测试:
public class BackDemo {
public static void main(String[] args) {
Teacher teacher = new Teacher(new Student());
teacher.doEvent();
}
}
结果:
我们可以看到回调完成.在实际开发过程中为了保证效率我们往往发布任务的时候会做成异步的,在本例中就是把 "老师让学生做课堂练习" 做成异步,具体实现很简单,就是新建一个线程就可以了,也就是把Teacher类中的 "student.doPractice(this);"代码改成下面的代码:
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
还有就是为了代码的简洁,我们常常把Teacher类写成匿名内部类的形式,代码就不演示了
Java接口回调测试
接口类
package com.java.demo.callBack_Interface;
public interface CallBack {
void getHValue(String s);
}
实现类
package com.java.demo.callBack_Interface;
public class ApplyPro implements CallBack{
public void getHValue(String sre) {
String ss=sre;
System.out.print(ss);
}
}
回调
package com.java.demo.callBack_Interface;
public class TestC {
CallBack callback;
public TestC(CallBack callBack)
{
this.callback=callBack;
}
public void getSpeak(){
String str="开始表演";
callback.getHValue(str);
}
}
实现测试
package com.java.demo.callBack_Interface;
public class TestMain {
public static void main(String[] args){
TestC tc=new TestC(new ApplyPro());
tc.getSpeak();
}
}
展示结果:只要打印出来开始表演,表示回调成功!!!
来源:https://blog.csdn.net/iteen/article/details/82183596


猜你喜欢
- 效果图激活引擎第一步配置APP_ID和SDK_KEY int activeCode = FaceEngine.activeOnline( C
- IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智
- 最近刚写了一个网易客户端首页导航条的动画效果,现在分享出来给大家学习学习。我说一下这个效果的核心原理。下面是效果图: 首先是布局,
- Android开发过程中,特别是新开的项目,底部状态栏的切换使用的频率非常的高,主要的实现方式有:(1)、TabLayout + Fragm
- 简介同步容器主要分两类,一种是Vector这样的普通类,一种是通过Collections的工厂方法创建的内部类虽然很多人都对同步容器的性能低
- 1. 将一些需要变动的配置写在属性文件中比如,没有把一些需要并发执行时使用的线程数设置成可在属性文件中配置。那么你的程序无论在DEV环境中,
- Main方法如下:static void Main(string[] args){ dynamic st
- 这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- Spring Data JPA 映射VO/DTO对象在项目开发中,时常需要根据业务需求来映射VO/DTO对象(这两个概念理解感觉很模糊- 。
- 前言之前几篇我们介绍了贝塞尔曲线的原理、绘制曲线和动效实现,这些都是代码预设好的,如果我们要根据需要自行绘制曲线,就需要使用交互来实现了。本
- java Class.getSimpleName() 的用法Usage in android:private static final St
- 面试题1:说说你对消息队列的理解,消息队列为了解决什么问题?我们公司业务系统一开始体量较小,很多组件都是单机版就足够,后来随着用户量逐渐扩大
- 打包发布jar包部署相对较为简单,尤其是在分布式服务比较多的情况下。单体项目如果是单体项目,只需要找到maven的插件,点击package运
- 关于Function.identity()的使用简单介绍话不多说,直接上JDK源码:static Function identity() {
- 接上一篇文章:Android实现图片区域裁剪功能上一篇文章提及了通过调用系统相册或拍照来实现图片的缩放\裁剪。不过这对于笔者项目的要求同样不
- 通常在写程序的时候,当要用到某些组件,采用的方法一般都是动态创建,用完以后就释放掉。Visual C#在程序运行的时
- 本文实例为大家分享了AndroidStudio实现能在图片上涂鸦的具体代码,供大家参考,具体内容如下一、内容:设计一个能在图片上涂鸦的程序二
- 常用,记录一下。效果图:首先新建xml文件 bg_gradient.xml<?xml version="1.0&
- 指针的概念:指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指
- 一般情况下,我们大部分人都是在XML文件直接写布局,可是有些时候需要用代码动态添加布局,比如我昨天做一个viewpager的页数