java-使用Kotlin进行参数回调

java-使用Kotlin进行参数回调,第1张

概述我刚开始Kotlin,所以请保持友好:)我有一个负责获取一些数据并通知主要活动其需要更新其UI的类.所以我在DataProvider.kt中做了一个函数:fungetPeople(fromNetwork:Boolean,results:((persons:Array<Person>,error:MyError?)->Unit)){//dosomestuff

我刚开始Kotlin,所以请保持友好:)

我有一个负责获取一些数据并通知主要活动其需要更新其UI的类.

所以我在DataProvIDer.kt中做了一个函数:

      fun getPeople(fromNetwork: Boolean, results: ((persons: Array<Person>, error: MyError?) -> Unit)) {        // do some stuff stuff        val map = hashMapOf(                "John" to "Doe",                "Jane" to "Smith"        )        var p = Person(map)        val persons: Array <Person> = arrayOf (p)        results(persons, null)    }

所以我想从我的活动中调用它,但是我找不到正确的语法! :

    DataProvIDer.getPeople(            true,            results =    )

我已经尝试了很多事情,但是我只想获取一组人和我的可选错误,以便可以更新UI.

目标是在我的数据提供程序中执行异步代码,以便我的活动可以等待它.

有任何想法吗 ?非常感谢您的帮助.

解决方法:

这实际上取决于您如何定义回调方法.如果使用独立功能,请使用::运算符.首先(当然),我应该解释语法:

(//these parenthesis are technically not necessary(persons: Array<Person>, error: MyError?)//defines input arguments: an Array of Person and a nullable MyError     -> Unit//defines the return type: Unit is the equivalent of voID in Java (meaning no return type))

因此该方法定义为:

fun callback(persons: Array<CustomObject>, error: Exception?){    //Do whatever}

你这样称呼:

DataProvIDer.getPeople(    true,    results = this::callback)

但是,如果使用匿名回调函数,则略有不同.这也使用lambda:

getPeople(true, results={/*bracket defines a function. `persons, error` are the input arguments*/persons, error ->  {        //do whatever    }})
总结

以上是内存溢出为你收集整理的java-使用Kotlin进行参数回调全部内容,希望文章能够帮你解决java-使用Kotlin进行参数回调所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1092110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存