web-dev-qa-db-ja.com

JavaクラスでKotlinサスペンド関数を呼び出す

次のサスペンド機能があると仮定します。

suspend fun doSomething(): List<MyClass> { ... }

既存のJavaクラス(今のところKotlinに変換できない)の1つでこの関数を呼び出し、その戻り値を取得する場合は、Continuation<? super List<MyClass>>そのパラメーターとして(当然)。

私の質問は、どうすれば実装できますか。特にそのgetContextゲッター。

11
mrtaikandi

まず、org.jetbrains.kotlinx:kotlinx-coroutines-jdk8依存関係へのモジュール。 Kotlinファイルで、Java非同期APIの記述スタイルに対応する次の非同期関数を定義します。

fun doSomethingAsync(): CompletableFuture<List<MyClass>> =
    GlobalScope.future { doSomething() }

ここで、Javaの世界で他の非同期APIを使用するのと同じ方法で、JavaからdoSomethingAsyncを使用します。

19
Roman Elizarov