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实现接口与结构内的方法,实现处理回调的逻辑

 

目录
相关文章
|
1月前
|
Java
【Java】一个简单的接口例子(帮助理解接口+多态)
【Java】一个简单的接口例子(帮助理解接口+多态)
17 0
C4.
|
1月前
|
Java
Java的接口
Java的接口
C4.
21 0
|
1月前
|
Java
JAVA接口
JAVA接口
12 0
|
5天前
|
Java 开发者
探索 Java 的函数式接口和 Lambda 表达式
【4月更文挑战第19天】Java 中的函数式接口和 Lambda 表达式提供了简洁、灵活的编程方式。函数式接口有且仅有一个抽象方法,用于与 Lambda(一种匿名函数语法)配合,简化代码并增强可读性。Lambda 表达式的优点在于其简洁性和灵活性,常用于事件处理、过滤和排序等场景。使用时注意兼容性和变量作用域,它们能提高代码效率和可维护性。
|
6天前
|
Java
Java接口中可以定义哪些方法?
【4月更文挑战第13天】
7 0
Java接口中可以定义哪些方法?
|
7天前
|
设计模式 Java
Java接口与抽象类
Java接口与抽象类
17 0
|
12天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
34 0
接口之美,内部之妙:深入解析Java的接口与内部类
|
14天前
|
存储 Java
java接口和内部类
java接口和内部类
|
15天前
|
缓存 安全 Java
Java中函数式接口详解
Java 8引入函数式接口,支持函数式编程。这些接口有单一抽象方法,可与Lambda表达式结合,简化代码。常见函数式接口包括:`Function<T, R>`用于转换操作,`Predicate<T>`用于布尔判断,`Consumer<T>`用于消费输入,`Supplier<T>`用于无参生成结果。开发者也可自定义函数式接口。Lambda表达式使实现接口更简洁。注意异常处理和线程安全。函数式接口广泛应用于集合操作、并行编程和事件处理。提升代码可读性和效率,是现代Java开发的重要工具。
29 0
|
15天前
|
Java 关系型数据库 MySQL
大厂面试题详解:Java抽象类与接口的概念及区别
字节跳动大厂面试题详解:Java抽象类与接口的概念及区别
40 0