【发布时间】:2021-01-05 21:49:28
【问题描述】:
您好,我有一个 kotlin 用例,我想从 java 代码中调用它,我该怎么做。这是我尝试过的
这是我的用例
@PerApp
class OnStandUseCase @Inject constructor(
private val orderRepository: OrderRepository,
private val serviceOrderTypeProvider: ServiceOrderTypeProvider
) : UseCaseCoroutine<GenericResponse, OnStandUseCase.Params>() {
override suspend fun run(params: Params) = orderRepository.notifyOnStand(
serviceOrderTypeProvider.apiPathFor(params.serviceType),
params.id,
params.action
)
data class Params(val serviceType: String, val id: String, val action: TimestampedAction)
}
UseCaseCoroutine
abstract class UseCaseCoroutine<out Type, in Params> where Type : Any {
abstract suspend fun run(params: Params): Type
operator fun invoke(params: Params, onResult: (type: Type) -> Unit = {}) {
val job = GlobalScope.async(Dispatchers.IO) { run(params) }
GlobalScope.launch(Dispatchers.Main) { onResult(job.await()) }
}
}
这就是我在我的 kotlin 类中的称呼
try {
onStandUseCase(OnStandUseCase.Params(serviceType, id, action)) {
callback.invoke(it)
}
} catch (exception: Exception) {
onStandResponseErrors()
}
但是从 java 类调用的等价物是什么
这是我尝试过的
onStandUseCase.run(new OnStandUseCase.Params("abcd", "1", new TimestampedAction("1","2"))){
}
我收到一个错误Expected 2 arguments but found only one
不确定从 java 代码调用用例的正确方法是什么
请给点建议
谢谢 回复
【问题讨论】:
-
您好@assylias 我确实尝试过,但没有成功
标签: java android kotlin use-case