我們在使用Java調用Kotlin協程方法時,方法參數在Kotlin端看到只有一個,但是通過Java調用時,要求傳入一個Continuation回調類,而這個類Java中并不存在,所以我們可以在Kotlin側新建一個抽象類繼承自Continuation,即可由Java端調用。
1、在Kotlin側新建一個Continuation類:
abstract class Continuation<in T> : kotlin.coroutines.Continuation<T> {
abstract fun resume(value: T)
abstract fun resumeWithException(exception: Throwable)
override fun resumeWith(result: Result<T>) = result.fold(::resume, ::resumeWithException)
}
2、在Java側調用:
coroutineFun(firstParam , new Continuation<String>() {
@Override
public CoroutineContext getContext() {
return EmptyCoroutineContext.INSTANCE;
}
@Override
public void resume(String value) {
//拿數據
}
@Override
public void resumeWithException(@NotNull Throwable throwable) {
//處理異常
}
});
yeah~~