您的位置:首页 > 编程语言 > Java开发

java接口回调

2017-08-03 14:33 155 查看
两个类:Dog和Cat,一个接口CallBack。

1 Dog类,实现接口CallBack接口:

public class Dog implements CallBack {

private Cat cat;
public Dog(Cat li){
this.cat=li;
}
public void ask(String s){
System.out.println("dog is asking");
//调用cat的ask方法,并把当前对象注册进去
cat.ask(this,s);
}
//回调函数
@Override
public void solve(String s) {
System.out.println("执行回调函数");
System.out.print(s);
}
}2.Cat类
public class Cat {
private CallBack callBack;
public void ask(CallBack callBack,String s){
System.out.println("cat:ask");
callBack.solve(s);
}
//内部类进行接口回调
public void setCallBack(CallBack callBack){
System.out.println("Cat:setCallBack");
callBack.solve("执行回调函数");
}
}3.测试代码
cat=new Cat();
dog=new Dog(cat);
dog.ask("dog is asking");

4.输出结果:
dog is asking
cat:ask
执行回调函数
dog is asking

分析:dog的ask方法调用cat的ask方法,cat的ask方法回调dog的solve方法,dog的solve方法是回调方法
****匿名内部类实现接口回调****

a.测试代码如下:

cat=new Cat();
cat.setCallBack(new CallBack() {
@Override
public void solve(String s) {
System.out.println("执行回调函数参数-s "+s);
System.out.println("内部类回调函数");
}
});输出结果:
Cat:setCallBack
执行回调函数参数-s 执行回调函数
内部类回调函数

分析:java多态,cat.setCallBack方法把一个实现CallBack接口的对象注册到cat中,实现回调
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息