【发布时间】:2018-10-18 08:12:14
【问题描述】:
假设我们有以下挂起函数:
suspend fun doSomething(): List<MyClass> { ... }
如果我想在我现有的 Java 类之一中调用此函数(我现在无法转换为 Kotlin)并获取它的返回值,我必须提供一个 Continuation<? super List<MyClass>> 作为它的参数(显然) .
我的问题是,我该如何实施。特别是它的getContext getter。
【问题讨论】:
-
我会尽一切可能避免这样做;我不希望它非常有效地工作。例如,您可以添加另一个 Kotlin 函数来启动您认为合适的协程,这不是挂起的乐趣,然后从 Java 中调用它。
-
我曾经有Java code 设法创建
Continuation的实现并调用suspend fun,但在Kotlin 1.3 中Continuation声明resumeWith(Result),其中Result是结果和internal class Failure的可区分联合,除了使用反射访问 Kotlin 实现中的私有成员之外,没有办法从 Java 提供它。
标签: java kotlin kotlin-coroutines