回顾接口回调:Interface CallBack 两种简单小思维
2016-09-13 09:33
387 查看
问题描述
写法1- 接口单独写
写法2-接口写在类中
今天又有一位高中同学,也可以算是刚接触Java的朋友问我一些问题,然后问到了接口回调,我就和他说明了,顺便有点时间,随手写了出来,希望简单的小案例能帮助到有需要的大家。
2.小李一时回答不出来,需要计算
3.小王因为急着玩,问完就走了。
4.小李得出答案后就给小王答案。
2.Wang.java
3.Li.java
Test.java
打印结果:
Li.java
Test.java
输出结果:
写法1- 接口单独写
写法2-接口写在类中
今天又有一位高中同学,也可以算是刚接触Java的朋友问我一些问题,然后问到了接口回调,我就和他说明了,顺便有点时间,随手写了出来,希望简单的小案例能帮助到有需要的大家。
问题描述:
1.小王问小李问题;2.小李一时回答不出来,需要计算
3.小王因为急着玩,问完就走了。
4.小李得出答案后就给小王答案。
写法1- 接口单独写:
1.接口 :CallBack.java//接口,誰設置誰/直接调用(选择在哪执行)谁給出結果,誰實現誰得到結果。 public interface CallBack { public void solve(String result); }
2.Wang.java
//王得到答案 public class Wang implements CallBack { Li li; public Wang(Li li) { this.li = li; } public void askQuestion(final int num) { new Thread(new Runnable() { @Override public void run() { li.executeMessage(Wang.this, num); } }).start(); //问完不管得到答案与否,马上玩耍去了 goPlay(); } private void goPlay() { System.out.println("问完问题,答案未知,玩去了..."); } @Override public void solve(String result) { System.out.println("得到了答案 : " + result); } }
3.Li.java
public class Li { public void executeMessage(CallBack callBack, int num) { System.out.println("小王的问题是: "+num); //模拟办事 int count = 0; for (int i = 0; i < num; i++) { if (i > 0 && i % 2 == 0) { count++; } } String reslut = "答案是"+count; //得到答案,告诉小王 callBack.solve(reslut); } }
Test.java
public class Test { public static void main(String[] args) { Wang wang = new Wang(new Li()); wang.askQuestion(1000); } }
打印结果:
问完问题,答案未知,玩去了... 小王的问题是: 1000 得到了答案 : 答案是499
写法2-接口写在类中:
Wang.java//王得到答案 public class Wang implements CallBack { Li li; public Wang(Li li) { this.li = li; } public void askQuestion(final int num) { //异步 new Thread(new Runnable() { @Override public void run() { //先设回调,再到执行信息方法。 li.setCallBack(new Li.CallBack() { @Override public void solve(String result) { System.out.println("得到了答案 : " + result); } }); //才再到执行方法。 li.executeMessage(num); } }).start(); //问完就玩耍,异步 goPlay(); } private void goPlay() { System.out.println("问完问题,答案未知,玩去了..."); }
Li.java
public class Li { //public void executeMessage(CallBack callBack, int num),写在内部了,不用传过来。 public void executeMessage(int num) { System.out.println("小王的要求数字是: " + num); //模拟办事 int count = 0; for (int i = 0; i < num; i++) { if (i > 0 && i % 2 == 0) { count++; } } String reslut = "答案是" + count; //接口方法在此执行:得到答案,告诉小王 callBack.solve(reslut); } //接口在内部写 public interface CallBack { void solve(String result); } private CallBack callBack; public void setCallBack(CallBack callBack) { this.callBack = callBack; } }
Test.java
public class Test { public static void main(String[] args) { Wang wang = new Wang(new Li()); wang.askQuestion(1000); } }
输出结果:
问完问题,答案未知,玩去了... 小王的要求数字是: 1000 得到了答案 : 答案是499
相关文章推荐
- USE Interface CallBack 通过接口实现回调
- interface ---接口 的简单应用
- callback(1)---callback interface--回传接口
- 一个简单的仿Button设定监听接口,以及回调方法
- 【史上最简单】android 自定义dialog中的接口回调
- 浅谈类两种继承机制--接口(Interface)和类(Class)的区别
- 最简单的方式理解“接口回调”的设计
- 利用 ICallbackEventHandler接口 实现客户端回调
- Android中callback(接口回调)机制
- 接口回调进行传值——CallBack应用举例
- Java回顾:用一个Demo来说明继承抽象类和实现接口的简单框架模型
- 接口应用实例----回调(callback)
- Asp页面客户端回调功能即ICallbackEventHandler接口使用笔记
- 利用 ICallbackEventHandler接口 实现客户端回调
- 最简单的方式理解“接口回调”的设计
- android.graphics.drawable.Drawable.Callback回调接口
- 浅谈类两种继承机制--接口(Interface)和类(Class)的区别
- 浅谈类两种继承机制--接口(Interface)和类(Class)的区别
- 浅谈类两种继承机制--接口(Interface)和类(Class)的区别
- Android 关于接口(interface)回调函数的简单应用