接口回调解析

接口回调是我们经常使用的一种传值方式,就是通过定义接口,在执行类中将执行结果交给接口,然后在运行类中通过接口将得到的值取出来。

其实,接口可以看做多态,这样方便理解,即通过父类指向子类实例!

 下面就详细说一下为什么这么说:

我们都知道,多态的父类指向子类实例,即一个父类A,有一个子类B继承了父类A,在调用的时候是通过A a=new B();就是通过父类的引用指向子类的实例,但是一样可以调用子类中的方法。

    接口回调与这个类似,一样是通过父类指向子类,只是接口是父类,具体实现类是子类。

下面进行代码演示:

  首先是创建一个Activity类,来作为展示。

 public class A extends Activity{

 public void onCreate(Bundle savedInstanceState){


}

}


然后创建执行类B

public class B{


}



创建接口,通过定义的参数来传递数据,可以是Bean类

public interface Myinter{
       void fanhui(BaseBean baseBean);
 }

然后,在B类中创建两个方法,一个是实例化接口,一个是处理需要执行的代码。

//执行

public void b(){

  BaseBean bean=“等会传递到A类中”;

}


//接口实例化

Myinter myinter;
//在activity,A类中调用该方法传入的是this,即Activity
public void getMyinter(Myinter myinter){
this.myinter=myinter;
//这句话相当于:Myinter myinter=new A();
}
那么,myinter现在就相当于一个Activity。
 
 
 
然后,在B类中创建的方法中通过调用接口将值传入

public void b(){

  BaseBean bean=“等会传递到A类中”;

myinter.fanhui(bean);

//因为Activity即A类需要实现接口,重写里面的方法,那么,这就相当于用A的对象,调用了A类中的接口实现

方法,传入了值,这个应该都知道。

}

既然在执行类中通过A类的对象调用了A类的接口实现方法,那么,A类中重写接口的方法,自然也就接收到了

这里传入的值,也就是接口回调。

下面是三个完整的类和注释:

public class A extends Activity implements Myinter{

 public void onCreate(Bundle savedInstanceState){

B b=new B();

//调用B类中的方法,将Activity传递过去

b.getMyinter(this);

}

//接口重写的方法,将会接受到传递的数据。

public void fanhui(BaseBean basebean){

text.settext(basebean);

}

}

B类

public class B{

Myinter myinter;


public void b(){

  BaseBean bean=“等会传递到A类中”;

//相当于activity调用A类中的接口实现的方法传入参数

myinter.fanhui(bean);

//在activity,A类中调用该方法传入的是this,即Activity
}
public void getMyinter(Myinter myinter){
this.myinter=myinter;
//这句话相当于:Myinter myinter=new A();
}


}


接口
public interface Myinter{
       void fanhui(BaseBean baseBean);
 }


这样,一个接口回调就完成了,只要换一种思路其实很好理解,就是A实现了接口里面的方法,然后把A传入B,在B里用A调用A里的接口实现的方法。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值