关于接口的一个使用,我觉得比较不错
2017-08-01 11:07
274 查看
在实际的开发中,比如要有一个耗时操作请求数据,在请求玩数据之后才能使用得到的数据完成接下来的操作,那么正常的逻辑就是要这么循序渐进的进行,但是按照java语义,它会直接跳过,只要执行了耗时操作之后不等你结束就执行之后的语句:
Data data= MyService.getData(url);//从服务器取数据
textview.setText(data.getText());
上面的两行代码如果直接运行,就肯定会出空指针,data没有值。因为耗时操作不等待,直接执行到下面。
那么为了实现我们的需求我们可以利用接口来实现,首先定义一个接口,里面使用泛型:public interface Callback <T>{//这里泛型是因为,我们每次请求的数据类型是不一样的
void callback(T t);
}
具体代码:
代码段1:
这样我们就可以实现我们之前所想要的逻辑了。
上面的代码可以这么理解,getdata的时候执行到最后一步callback,但是没有找到方法体,所以回去调用getdata方法中找方法体,然后执行getdata中的方法体。也可以这么理解先执行代码段1调用getdata,跳到代码段2 执行,再跳回代码段1执行具体callback方法体,这时候代码段1执行结束,随之代码段2执行结束。
Data data= MyService.getData(url);//从服务器取数据
textview.setText(data.getText());
上面的两行代码如果直接运行,就肯定会出空指针,data没有值。因为耗时操作不等待,直接执行到下面。
那么为了实现我们的需求我们可以利用接口来实现,首先定义一个接口,里面使用泛型:public interface Callback <T>{//这里泛型是因为,我们每次请求的数据类型是不一样的
void callback(T t);
}
具体代码:
代码段1:
Data data= MyService.getData(url,new Callback<Data>() { @Override public void callback(Data data) { textview.setText(data.getText()); } });//从服务器取数据
代码段2
public Data getData(String url,Callback<Data> callback){ //取数据的具体操作 ........ //去完之后回调: callback.callback(data); }
这样我们就可以实现我们之前所想要的逻辑了。
上面的代码可以这么理解,getdata的时候执行到最后一步callback,但是没有找到方法体,所以回去调用getdata方法中找方法体,然后执行getdata中的方法体。也可以这么理解先执行代码段1调用getdata,跳到代码段2 执行,再跳回代码段1执行具体callback方法体,这时候代码段1执行结束,随之代码段2执行结束。
相关文章推荐
- 一个不错的关于mysql和posgresql比较的帖子
- AFNetwork库的使用(个人觉得比较不错)
- 一个不错的关于CPU和GPU(CUDA)的性能比较讨论话题
- 偶然看到一个关于swing布局管理器的总结,觉得不错,如下。
- Java中的接口与抽象类的比较、应用和实例 – 一个培训师不错的简洁解述
- 一个不错的关于sql数组的使用例子
- 今天需要获取一个网站的web服务反馈回来的数据,找到份不错的帖子关于WebClient类的使用,记录下来·
- iteye一篇关于同步锁的一个比较不错的文章,入门用
- 关于JavaScript中使用appendChild和innerHTML动态添加一个元素的时间的比较
- 关于CPtrList使用中的一个问题
- 一个比较使用的asp 函数集合类
- 推荐一个WSS学习的好网站:http://wss.collutions.com and Http://www.wssdemo.com,本人决没有做广告的意思,只是觉得上面的东西不错。
- 最近用到的觉得比较不错的几个tips-(1)asp。net操作ftp,上传和下载 (2) 长时间提交,在提交后禁止页面按钮 (3) 方便的javascript日历
- 关于httpcontext实际使用时出现的一个问题
- 关于httpcontext实际使用时出现的一个问题
- 一个不错的关于tapestry的blog
- 一篇比较不错的关于masterpage的文章
- 我 收藏的一个不错的网址!是关于config的
- (原创)两年前写的一个关于六款WEB上传组件性能测试与比较
- [原创]一个关于日期比较与排列的代码!