java - 如何在Java中调用将回调作为参数的函数
问题描述
我正在尝试在我的 android 应用程序中实现ReachFive,我必须调用初始化方法。
这就是他们在文档中的称呼:
// Initialize the ReachFive client
client.initialize({ providers ->
// On success, do something with the retrieved list of providers registered for this ReachFive client
// ...
}, {
// On failure, log the error message returned by the ReachFive client
Log.d("Reach5_MainActivity", "ReachFive init ${it.message}")
})
但是这个代码示例在 Kotlin 中,我不知道如何initialize
在 java 中调用该方法。
编辑:这是initialize
SDK 代码中的函数 find:
fun initialize(
success: Success<List<Provider>> = {},
failure: Failure<ReachFiveError> = {}
): ReachFive {
reachFiveApi
.clientConfig(mapOf("client_id" to sdkConfig.clientId))
.enqueue(
ReachFiveApiCallback<ClientConfigResponse>(
success = { clientConfig ->
scope = clientConfig.scope.split(" ").toSet()
providersConfigs(success, failure)
},
failure = failure
)
)
return this
}
解决方案
试试这个(把你的函数的实现/逻辑而不是点)
client.initialize((providers) -> {...}, (error) -> {...});
请注意,您的第一个方法应该返回一个实例,Success<List<Provider>>
而您的第二个 lambda 应该返回Failure<ReachFiveError>
.
推荐阅读
- c++ - 我怎么知道我的最后一条指令
- kubernetes - Azure 应用程序网关如何与 kubernetes 入口控制器(nginx)连接
- depth-first-search - DAG 中两个顶点之间的最大路径长度
- r - 如何在绘制等高线图时为二元分布(x-mu => 0)和(x-mu <0)添加条件?
- java - 我做的代码有问题吗?
- linux - 如何根据文件的数量将文件夹的内容复制到多个文件夹?
- javascript - YTPlayer 背景视频不自动播放
- c++ - For Loop 无法正确打印
- c# - Cannot update DataGridView cell via DataBoundItem?
- c# - 如何使用 Selenium 和 C# 修复测试自动化代码?