Java编程接口回调一般用法代码解析

发布时间 - 2026-01-11 03:15:44    点击率:

接口回调是指:可以把使用某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。

Java接口回调一般用法:实现接口实际上和继承抽象类类似,只不过继承是在类的层面上操作,接口是在方法和常量集合的层面上操作,接口比抽象类更抽象、更简洁。可以把实现接口看成继承特定的一个或多个方法以及一些常量,关于接口的具体规则这里不赘述。

为什么要使用接口和抽象类?因为从很多角度讲,这样做符合面向对象的设计思想,比如开闭原则等。

从实际开发的角度讲,Java不支持多继承,为了弥补这一点,接口的存在就极为重要,和继承不同,一个类可以实现多个接口。

接口的一大作用是实现回调,回调分同步回调和异步回调,区别是异步回调使用了多线程技术,当回调中有耗时操作时,就需要使用异步回调。

以下全部以异步回调为例。以下以java写法为例,android同理。

1、一般用法

新建入口类 Main,并新建接口 InterfaceExample

public class Main implements InterfaceExample{
  public static void main(String[] args) {
    System.out.println("------接口使用测试--------");
    InterfaceTest test = new InterfaceTest();
    //调用InterfaceTest的handleThings方法,并传递Main的实例
    test.handleThings(new Main());
    System.out.println("------异步回调测试--------");
  }
  @Override  //重写接口方法
  public void sendMessage(String string) {
    System.out.println("接口回调成功,利用 " + string + " 做一些事");
  }
}
 
//接口也可以写在一个独立的.java文件里
interface InterfaceExample {
  void sendMessage(String string);
}

下面新建发起回调的类InterfaceTest

public class InterfaceTest {
  //注意这里Main实例向上转型,接口变量引用了Main实例
  public void handleThings(InterfaceExample example) {
    new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println("-----做一些事------");
        try {
          Thread.sleep(3000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        //回调接口方法
        example.sendMessage("接口传的参数");
      }
    }).start();
  }
}

最后运行输出:

------接口使用测试--------
------异步回调测试--------
-----做一些事------
接口回调成功,利用 接口传的参数 做一些事

其中异步的处理也可以在Main中调用handleThings时进行。

2、结合匿名内部类实现接口回调

第二种方法只需要在第一种的基础上修改Main类就可以

public class Main {
  public static void main(String[] args) {
    System.out.println("------接口使用测试--------");
    InterfaceTest test = new InterfaceTest();
    //调用InterfaceTest的handleThings方法,并使用实现了InterfaceExample接口的匿名内部类
    //在该匿名内部类中重写接口方法
    test.handleThings(new InterfaceExample() {
      @Override  //重写接口方法
      public void sendMessage(String string) {
        System.out.println("接口回调成功,利用 " + string + " 做一些事");
      }
    });
    System.out.println("------异步回调测试--------");
  }
}
interface InterfaceExample {
  void sendMessage(String string);
}

可以看到,采用匿名内部类的方式可以简化代码,使程序结构更清晰。所以这种用法很常见,比如android系统提供的view的点击事件就是采用这种形式进行回调。

输出是一样的:

------接口使用测试--------
------异步回调测试--------
-----做一些事------
接口回调成功,利用 接口传的参数 做一些事。

        本文关于Java编程接口回调一般用法的介绍就到这里,希望对大家有所帮助。


# java  # 接口回调  # 接口回调用法  # java 接口回调实例详解  # Java按时间梯度实现异步回调接口的方法  # Java中的接口回调实例  # 深入了解Java接口回调机制  # 基于Java接口回调详解  # Java接口回调的本质详解  # java实现异步线程  # 回调接口方式  # Java接口的回调机制的实现  # 回调  # 重写  # 是在  # 多个  # 为例  # 抽象类  # 就可以  # 角度讲  # 这一  # 基础上  # 是指  # 中有  # 只需  # 要在  # 一大  # 这样做  # 层面上  # 可以看到  # 不支持  # 可以实现 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何快速建站并高效导出源代码?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何自定义建站之星网站的导航菜单样式?  Laravel如何升级到最新版本?(升级指南和步骤)  微信小程序 wx.uploadFile无法上传解决办法  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Python文件流缓冲机制_IO性能解析【教程】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  PHP正则匹配日期和时间(时间戳转换)的实例代码  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  教学论文网站制作软件有哪些,写论文用什么软件 ?  详解jQuery中基本的动画方法  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  企业网站制作这些问题要关注  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何快速搭建虚拟主机网站?新手必看指南  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  iOS验证手机号的正则表达式  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Laravel如何自定义分页视图?(Pagination示例)  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何快速登录WAP自助建站平台?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何将凡科建站内容保存为本地文件?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel如何发送系统通知?(Notification渠道示例)  iOS中将个别页面强制横屏其他页面竖屏  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  免费网站制作appp,免费制作app哪个平台好?