Java中接口回调

来源:互联网 发布:淘宝袜子店铺名字大全 编辑:程序博客网 时间:2024/06/11 11:24

前几天遇到一个问题。 android 主项目中执行 库中的方法,结果库中需要用到一些 只有主项目中才存在的东西。 没有办法,只能通过接口再回调到 主项目中。于是来了一个大循环。你们可能会说这样写不好。  我只能说,不是我设计的,不是我设计的,不是我设计的,而我还必须要完成这个进度。  大概思路是 3 中的代码实现。


看见别人说的很形象。转过来,理解一下基本概念:

理解的接口回调就是,我这个类实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机回头来调用我doSomething的方法。好比,我给你打电话问某个难题,你电话里想不出来,于是说等想到了再回我电话。(转)

1, 代码实现(无参数,无返回值):
public class Demo {public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stub// 我实现接口,等着你的电话。HandlerInterface handlerInterface = new HandlerInterface() {@Overridepublic void deal() {// TODO Auto-generated method stubSystem.out.println("回调");}};Thread.sleep(3000); // 做一些事情。handlerInterface.deal(); // 打电话告诉我,我想出问题了。}// 定义接口public interface HandlerInterface{void deal();}}

 2, 代码实现( 有参,无返回值)

public class Demo {public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stub// 我实现接口,等着你的电话。HandlerInterface handlerInterface = new HandlerInterface() {@Overridepublic void deal(String an) {// TODO Auto-generated method stubSystem.out.println(an);}};Thread.sleep(3000); // 做一些事情。handlerInterface.deal("答案"); // 打电话告诉我,我想出问题了。}// 定义接口public interface HandlerInterface{void deal(String an);}}


 具体的在项目中,通常在两个类之间使用,道理是一样的。下面的代码用两个类,模拟两个人。


3,两个类。People1 问 People2 问题。

public class People1 {public static void main(String[] args) {// TODO Auto-generated method stub// 我已经实现,监听着,等着people2告诉我People2 people2 = new People2(new HandlerInterface() {@Overridepublic void deal(String an) {// TODO Auto-generated method stubSystem.out.println("答案是:"+an);}});}}


public class People2 {private HandlerInterface handlerInterface;public People2(HandlerInterface handlerInterface) {this.handlerInterface = handlerInterface;handlerInterface.deal("答案");  //告诉 people1答案。在满足条件的时候调用。}// 定义接口public interface HandlerInterface {void deal(String an);}}


Over。

1 0
原创粉丝点击