kotlin 定义接口并实现回调的例子
开发环境 android studio 3.0.1 已支持 kotlin
1、定义接口
interface CallBack{ fun callBack(info : String) }
2、实现接口 : 为继承\实现
class CallBacks : CallBack{ override fun callBack(info : String){ Log.d("MainApp","current info $info") } }
或者
private var mCallBack = object : CallBack{ override fun callBack(info : String){ Log.d("MainApp","current info $info") } }
3、定义带回调方法的函数
private fun initData(callBack : CallBack):Boolean{ callBack?.callBack("我来自回调") return true }
4、实现回调,调用方式与实现接口对应
initData(CallBacks())
或者
initData(mCallBack)
打印结果:
补充知识:Kotlin调用接口样例(如新建接口作为回调)
背景
kotlin里调用某个java定义的接口,方式非常简单,但是调用kotlin定义的却比较麻烦。
如textView.setOnClickListener { Toast.makeText(applicationContext, "test", Toast.LENGTH_SHORT).show() }
解决方案
接口定义样例:
interface OnShakeListener { fun onShake() }
调用样例:
sensorHelper.setOnShakeListener(object : OnShakeListener { override fun onShake() { Toast.makeText(applicationContext, "test", Toast.LENGTH_SHORT).show() } })
以上这篇kotlin 定义接口并实现回调的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Kotlin 使用Lambda来设置回调的操作
使用Kotlin的Lambda表达式,我们可以抛弃回调接口的使用.只需设置希望后面会被调用的函数即可. 示例如下 新建一个Kotlin类 class MyBean { fun testcallback1(callback: (String) -> Unit) { callback.invoke("这是回调的内容") } fun testcallback2(value1: Int, value2: Int, callback: (Int, Int) -> Int): Int
-
Kotlin 使用高阶函数实现回调方式
lambda 和 高阶函数 之前学习了 lambda 和高阶函数,然后在 android 开发中对 onClick 事件进行监听是一个很常用的功能,kotlin 的常规实现如下: rootView.setOnClickListener { view -> println("点击了这个ID=${view.id}的view") } 然后在开发中不可避免的我们也要写一些自定义监听之类的代码.这个时候如果还用 java 的思想去实现的话就有点舍近求远了. java 思想实现 在 java
-
如何利用Kotlin实现极简回调
前言 在各种开发场景中,回调都有着广泛的应用,命名往往是各种Callback和Listener,其中在Android中接触最早也最常用的可能就是View.OnClickListener了. mBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("MM","Click"); } }); 不过写多了也有点烦恼,我只想打印一条日志
-
利用 kotlin 的方式自定义回调事件(kotlin函数参数)
java 中自定义回调事件的写法 创建 interface类,创建 interface 对象,实现 set 方法: 使用: kotlin 中自定义点击事件写法 依照 java 的思想(不推荐) 创建 interface类,创建 interface 可变对象(var) 使用: 利用 kotlin 函数作为参数(强烈推荐) 来看一下系统的点击事件在 kotlin 中是什么样的: 是不是简直简洁到不像话?再看看你自己定义的点击事件回调,感觉跟还在用 java 开发一样- 下面就来看个新的写法: 创建一
-
kotlin 定义接口并实现回调的例子
开发环境 android studio 3.0.1 已支持 kotlin 1.定义接口 interface CallBack{ fun callBack(info : String) } 2.实现接口 : 为继承\实现 class CallBacks : CallBack{ override fun callBack(info : String){ Log.d("MainApp","current info $info") } } 或者 private var mC
-
Java 是如何利用接口避免函数回调的方法
一.引言 在许多编程语言中,都有函数回调这一概念.C 和 C++ 中有函数指针,因此可以将函数作为参数传给其它函数,以便过后调用.而在 JavaScript 中,更是将函数回调发挥到了极致,各种事件的处理,特别是异步事件,基本都靠函数回调来完成. 在 Java 中,同样可以实现函数回调.虽然没有函数指针,但 Java 可以通过反射机制来获得一个类的方法,将其以 java.lang.reflect.Method 类型参数传递给其它函数,然后通过 Method 对象的 invoke 方法来调用该函数
-
使用layui定义一个模块并使用的例子
在使用layui的过程,有几个方法需要被多个js引用,所以我按照文档,自定义了一个layui的模块,下面实现过程 先定义一个模块 //定义模块 layui.define(['form'], function(exports){ var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功 var $ = layui.$; var obj = { changeParentPlace: function (parentId,tagId,levelPlace) {
-
Kotlin 创建接口或者抽象类的匿名对象实例
一 ,定义接口和抽象类 interface IPerson{ //获取名字 fun getName():String //获取身份证ID fun getID():String } abstract class BaseAnimal{ abstract fun getVoice():String } 二,创建对应的匿名对象 object : IPerson { override fun getName(): String = "jason" override fun getID(): S
-
TypeScript定义接口(interface)案例教程
接口的作用: 接口,英文:interface,其作用可以简单的理解为:为我们的代码提供一种约定. 在Typescript中是这么描述的: TypeScript的核心原则之一是对值所具有的结构进行类型检查.它有时被称做"鸭式辨型法"或"结构性子类型化". 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约. 举个例子: // 定义接口 Person interface Person { name: string; age: numb
-
C#调用C++动态库接口函数和回调函数方法
目录 1. 前言 2. 普通接口函数调用示例 2.1 C++端编写接口 2.2 C#端调用 3. 回调函数调用示例 3.1 C++端编写接口 3.2 C#端调用 1. 前言 需求: 当前C已经写好了一个动态库,完成了产品开发需求,C#需要调用C编写的动态库DLL接口,开发出完整的软件,DLL动态库里包含了普通接口函数,回调函数. 开发环境: win10 64位 .VS2017 2. 普通接口函数调用示例 2.1 C++端编写接口 (1)头文件里声明需要提供的接口,导出接口,方便C#调用 //带返
-
HTTP状态代码及其定义解析 Ajax捕捉回调错误参考
HTTP状态代码及其定义解析 Ajax捕捉回调错误参考 状态行包含HTTP版本.状态代码.与状态代码对应的简短说明信息.在大多数情况下,除了Content-Type之外的所有应答头都是可选的.但Content-Type是必需的,它描述的是后面文档的MIME类型.虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远不会附带文档.有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明). 当用户试图通过 HTTP 访问一台正在运行 I
-
一个超简单的jQuery回调函数例子(分享)
jQuery回调函数简单使用 比如说,我们想要点击某个按钮后触发事件, 先把一些指定内容给隐藏掉, 然后跳出相关信息的对话框. 如果使用普通的方法, 不用回调函数的话, 会有怎么样的效果呢? 效果是先弹出对话框再隐藏内容, 然后再隐藏指定内容. 这显然不是我们想要的效果, 如果使用回调函数,就可以解决这个问题. 当然,回调函数功能远不只这么简单-- 具体的代码如下: <%@ page language="java" import="java.util.*" p
-
python 控制Asterisk AMI接口外呼电话的例子
Asterisk 是一个开放源代码的软件VoIP PBX系统,我们用Asterisk 搭建企业内部电话系统. Asterisk AMI的Asterisk管理接口.可以实现对Asterisk系统的监控和控制. 安装 asterisk-ami pip install asterisk-ami pip install git+https://github.com/ettoreleandrotognoli/python-ami 源码 #!/usr/bin/env python #-*- coding:
随机推荐
- android中Invalidate和postInvalidate的更新view区别
- litjson读取数据示例
- 浅谈vue路径优化之resolve
- Failed to execute goal org...的解决办法
- javascript appendChild,innerHTML,join性能比较代码
- asp.net 下载文件时输出文件内容
- DataGridView单元格显示多行的设置方法
- PHP脚本数据库功能详解(中)
- Python中的连接符(+、+=)示例详解
- 深入解析MySQL的事务隔离及其对性能产生的影响
- Mysql使用大全 从基础到存储过程
- 基于jQuery实现点击最后一行实现行自增效果的表格
- 图片之间的切换
- 六大主流防火墙正确设置技巧
- 跨域请求 Apache 服务器配置的方法
- Android用过TextView实现跑马灯效果的示例
- VC中删除类的两种操作方法
- 详谈.net中的垃圾回收机制
- Android实现动态改变app图标的示例代码
- Android自定义View实现可以拖拽的GridView