开发者社区> eclipse_xu> 正文

Java接口回调是个什么玩意儿

简介: java的接口回调,在android下用的是越来越多了,到底该怎么理解他呢? 回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的时候直接设置这个接口对象即可.
+关注继续查看

java的接口回调,在android下用的是越来越多了,到底该怎么理解他呢?

回调就是外部设置一个方法给一个对象, 这个对象可以执行外部设置的方法, 通常这个方法是定义在接口中的抽象方法, 外部设置的时候直接设置这个接口对象即可.


如何定义一个回调

a. 定义接口 : 在类中定义一个Interface, 并在接口中定义一个抽象方法;
b. 接口对象 : 在类中定义一个该接口的成员变量;
c. 设置对象 : 在类中定义一个公共的方法, 可以设置这个接口的对象, 调用该方法给接口对象成员变量赋值;
d. 调用方法 : 在合适的位置调用接口对象中的方法;
 

好比是一个领导和一个下属,还有一个下属间谍三个人之间不清不楚的关系

 

1、下属有一个吃饭的事情……

(定义接口)

2、领导发表申明,说对下属的吃饭这件事感兴趣,并说了如果下属吃饭,他就怎么样怎么样,但是老板就是老板,总不能一直盯着下属所以……

(实现接口,并实现处理监听事件的方法)

3、领导一说话,间谍就去了下属那,并且领导给了间谍特权,可以使用我的怎么样怎么样方法

(建立于接口的连接,实际上是一个向上转型的过程,把间谍upcase为一个领导,从而调用领导的方法)

4、,然后只要一吃饭,间谍就通知领导,并替领导完成什么样什么样的事情

(通过接口的实例,调用接口中的方法)

 

这样一说,大家应该对接口回调的机制有了点感性的理解了吧。

 

interface People{
 
   void peopleList();
 
}
 
class Student implements People{
 
   public void peopleList(){
 
    System.out.println("I’m a student.");
 
}
 
}
 
class Teacher implements People{
 
  public void peopleList(){
 
    System.out.println("I’m a teacher.");
 
}
 
}
 
public class Example{
 
  public static void main(String args[]){
 
    People a;             //声明接口变量
 
a=new Student();      //实例化,接口变量中存放对象的引用
 
a.peopleList();        //接口回调
 
a=new Teacher();     //实例化,接口变量中存放对象的引用
 
a.peopleList();       //接口回调
 
}
 
}


通过接口,我们将大量共通但实现细节不同的方法抽象出来,再去实现它的接口类中具体处理,这样通过接口去调用方法的时候,就不用考虑具体调用哪个方法了。

 

这是一种用法,大致是多态的意思,还有一种用法就是组件中的通信:

例如Fragment间的通信

1、在Fragment中定义接口,申明接口的实例,在onAttach()方法中实现接口实例化为Activity对象

 

2、在Fragment中的某个方法内,使用接口的实例,调用Activity的方法,向Activity通信

 

3、Activity实现接口与结构内的方法,实现处理回调的逻辑

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java之写接口回调编程经验改进
java之写接口回调编程经验改进
75 0
java的接口回调
直接看代码: interface People{ void peopleList(); } class Student implements People{ public void peopleList(){ System.out.println("I’m a student."); } } class Teacher implements Peop
906 0
java-接口回调
前言 接口回调是java中非常有用的一种编程方式。 概念 回调是通过对象携带一些信息,这些信息允许在稍后的某个时刻调用初始的对象。 价值 回调的价值在于它的灵活性-可以在运行的时候动态的绑定具体需要方法。 案例 定义接口Flower /** * 花的接口 */ public interface Flower { void show();
1118 0
Java实现单词计数MapReduce
本文分享实现单词计数MapReduce的方法
134 0
JAVA 实现上传图片添加水印(详细版)(上)
JAVA 实现上传图片添加水印(详细版)
279 0
Java 实现汉字按照首字母分组排序
Java 实现汉字按照首字母分组排序
195 0
Java实现图书管理系统
本篇文章是对目前Java专栏已有内容的一个总结练习,希望各位小主们在学习完面向对象的知识后,可以阅览本篇文章后,自己也动手实现一个这样的demo来加深总结应用已经学到知识并进行巩固。
178 0
java实现spring boot项目启动时,重启Windows进程
java实现spring boot项目启动时,重启Windows进程
287 0
Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
如果要在某一个界面里面添加功能的话,都在一个类中,会显得代码难以阅读,而且修改起来也会很困难,所以我们将游戏主界面、登录界面、以及注册界面都单独编成一个类,每一个类都继承JFrame父类,并且在类中创建方法来来实现页面
183 0
Java网络编程:UDP/TCP实现实时聊天、上传图片、下载资源等
ip地址的分类: 1、ipv4、ipv6 127.0.0.1:4个字节组成,0-255,42亿;30亿都在北美,亚洲就只有4亿 2011年就用尽了。
132 0
+关注
eclipse_xu
《Android群英传》作者
文章
问答
视频
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
JAVA开发手册1.5.0
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多