kotlin事件回调两种方式 Posted on 2019-05-17 | In kotlin 记录学习kotlin过程中事件回调两种方式 定义一个回调接口12345interface NetCallBack { fun onSuccess(data: Any) fun onFail(msg: String)} 模拟一个网络请求类12345678910111213141516171819202122232425262728293031323334353637383940414243/** * <pre> * author : ghwang * e-mail : 429329513@qq.com * time : 2019/05/17 * desc : 单利,类方法 * </pre> */object HttpRequest { private val resultCode: String by lazy { "0" } //kotlin方式回调 lateinit var onSuccess: (data:Map<String,String>) -> Unit lateinit var onFail: (msg:String) -> Unit fun sendRequest(url: String,params:Map<String,Any>,callBack:NetCallBack){ when(resultCode){ "0" -> { //java方式回调 callBack.onSuccess(mapOf("data" to "lists")) //kotlin方式回调 onSuccess.invoke(mapOf("kotlinCallBack-Data" to "lists")) }else -> { //java方式回调 callBack.onFail("error") //kotlin方式回调 onFail.invoke("kotlinCallBack-Error") } } }} 具体调用方式123456789101112131415161718192021222324//kotlin方式回调,为了方便测试先初始化好再发送请求HttpRequest.onSuccess = {it L.json(it)}HttpRequest.onFail = {it L.d(it)}HttpRequest.sendRequest("http", mapOf("foo" to "bar"),object :NetCallBack{ override fun onSuccess(data: Any) { L.json(data as Map<String,String>) } override fun onFail(msg: String) { L.d(msg) }})