android-java同步方法和异步方法
接口
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。在java中,接口用关键字interface来表示,书写方法为:
public interface Listener{void result();
}
而后面跟的接口名称,按照习惯以XX_Listener,也就是监听器的意思。
在Java语言规范中,一个方法的特征仅包括方法的名字、参数的数目和类型,而不包括方法的返回类型、参数名以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。
接口实现和类继承的规则不同,为了数据的安全,继承时一个类只有一个直接父类,也就是单继承,但是一个类可以实现多个接口,接口弥补了类的不能多继承缺点,继承和接口的双重设计既保持了类的数据安全也变相实现了多继承。
抽象类
Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。
在抽象类中可以包含一般方法和抽象方法。抽象方法的定义与一般方法不同,抽象方法在方法头后直接跟分号,而一般方法含有以大括号框住的方法体。所有的抽象方法必须存在于抽象类中。
区别
- Java抽象类可以提供某些方法的部分实现,而Java接口不可以;
- 向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点;
一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性;
任何一个实现了一个Java接口所规定的方法的类都可以具有这个接口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。
使用
在同步方法中,可以在方法体内按顺序执行代码得到结果并通过return返回,这类方法一般不用于计算,只是算力简单的代码;
如果算力复杂,需要消耗比较长的时间,则用异步方法,不直接返回结果,而且等待计算完成之后,回调结果。
public class Demo {public static String reverseStrSync(String src) {StringBuilder temp = new StringBuilder();temp.append(src);temp.reverse();return temp.toString();}public static void reverseStrASync(String src, ResultListener resultListener, Result result) {new Thread(new Runnable() {@Overridepublic void run() {StringBuilder temp = new StringBuilder();temp.append(src);temp.reverse();if (resultListener != null) {resultListener.reverse(temp.toString());}if (result != null) {result.reverse(temp.toString());result.reverse2(temp.toString());}}}).start();}public interface ResultListener {void reverse(String dst);}public abstract static class Result {abstract void reverse(String dst);void reverse2(String dst) {System.out.println("reverse2 = " + dst);}}public static void main(String[] args) {reverseStrASync("abcd", new ResultListener() {@Overridepublic void reverse(String dst) {System.out.println("ResultListener reverse = " + dst);}}, new Result() {@Overridevoid reverse(String dst) {System.out.println("Result reverse = " + dst);}});}
}
运行结果
android-java同步方法和异步方法相关推荐
- java同步调用异步方法_关于同步方法里面调用异步方法的探究
##前言 我在写代码的时候(.net core)有时候会碰到void方法里,调用async方法并且Wait,而且我还看到别人这么写了.而且我这么写的时候,编译器没有提示任何警告.但是看了dudu的文章 ...
- Android java传递string类型数据给C
本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...
- android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题
android java.lang.IllegalArgumentException: Comparison method violates its general contract! 问题 jav ...
- android 5秒后进入,Android/Java:如何在5秒后停止下载?
我正在使用AsyncTask来下载文件,目的是测量连接的下载速度.我想在5秒后停止下载,以便我可以检查下载的总字节数并计算速度.下面是我使用(这被放置在doInBackground()方法中)的代码: ...
- js端调用android端同步方法,JS怎样调用Android本地原生方法
1.设置webview webSettings.setJavaScriptEnabled(true);//设置js可用 MJavascriptInterface mJavascriptInterfac ...
- android java.lang.IllegalArgumentException: The observer is null.异常解决
android java.lang.IllegalArgumentException: The observer is null.异常解决 参考文章: (1)android java.lang.Ill ...
- Android+Java中使用Aes对称加密的工具类与使用
场景 Android+Java中使用RSA加密实现接口调用时的校验功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11146 ...
- android Java BASE64编码和解码二:图片的编码和解码
1.准备工作 (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础 (2)添加 ImgHelper 工具类 package com.a ...
- adt eclipse java1.8,android java开发 第一天 之熟习eclipse adt
android java开发 第一天 之熟悉eclipse adt ADT:eclipse中的开发android软件的插件(android development tools)功能:管理android ...
- Android Java包
下面简短介绍一下Android SDK中重要的包. android.app:实现Android的应用程序模型.主要的类包括Application(表示开始和结束语义),以及众多与Activity相关的 ...
最新文章
- Android自定义View详解,知乎上转疯了!
- 在pcduino上实现图像识别的程序
- 我只是一只碌碌无为的工蚁 : (
- gravity 时序图绘制,改
- bootstrap获取弹框数据_Bootstrap模态弹出框的实例教程
- 原生的html组件,如何创建HTML5与原生UI组件混合的移动应用程序
- python路径相关小问题
- 计算机关机后自行启动,Win7官方旗舰版系统电脑关机后自动开机的解决办法
- a-select 下拉框样式修改
- vs2010英文版变中文版
- 博士“申请考核制”经验
- 【git】基于github开源平台的项目进行二次开发
- Android8.1 修改音量级别和默认音量
- 【UI设计No9】VI
- canvas下雪效果(原生js)
- matplotlib之pyplot模块——填充多边形(fill)
- 内存管理(15)——UI(20)——DeleteObject
- vscode调出大纲
- 微信小程序实现录音及本地录音播放功能
- 【附源码】计算机毕业设计java幼儿园管理系统设计与实现
热门文章
- PDF文件详细数据结构
- mesh路由器哪个品牌好(无线mesh组网推荐路由器)
- android imagebutton 动画,Android:单击时获取动态生成的ImageButton的ID
- 机器学习实验2 / 逻辑回归
- inode满了postfix/postdrop: warning: mail_queue_enter: create file maildrop : No space left on device
- 0-1背包问题C语言
- 如何构造平衡二叉树(AVL树)(LL、LR、RL、RR)
- 数据集的创建(digits)
- Diverse Embedding Expansion Network and Low-Light Cross-Modality Benchmark for V-I Re-ID:如何有效利用生成嵌入?
- VUE3使用JSON编辑器