web-dev-qa-db-fra.com

Appelez la fonction de suspension de Kotlin dans la classe Java

Supposons que nous ayons la fonction de suspension suivante:

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

Si je veux appeler cette fonction dans l'une de mes classes Java Java (que je ne suis pas en mesure de convertir en Kotlin pour l'instant) et obtenir sa valeur de retour, je dois fournir un Continuation<? super List<MyClass>> comme paramètre (Évidemment).

Ma question est, comment puis-je en implémenter un. Surtout son getContext getter.

11
mrtaikandi

Tout d'abord, ajoutez org.jetbrains.kotlinx:kotlinx-coroutines-jdk8 module à vos dépendances. Dans votre fichier Kotlin, définissez la fonction asynchrone suivante qui correspond à Java style d'écriture des API asynchrones:

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

Utilisez maintenant doSomethingAsync de Java de la même manière que vous utilisez d'autres API asynchrones dans le monde Java.

19
Roman Elizarov