将Kotlin'suspend fun'转换为Java

将Kotlin'suspend fun'转换为Java,kotlin,Kotlin,我正在尝试将库从Kotlin转换为Java,但此方法限制了我: private suspend fun queryPurchases() { val inappResult: PurchasesResult = mBillingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP) processPurchases(inappResult.purchasesList, isRestore = true)

我正在尝试将库从Kotlin转换为Java,但此方法限制了我:

private suspend fun queryPurchases() {
        val inappResult: PurchasesResult = mBillingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP)
        processPurchases(inappResult.purchasesList, isRestore = true)
        val subsResult: PurchasesResult = mBillingClient.queryPurchasesAsync(BillingClient.SkuType.SUBS)
        processPurchases(subsResult.purchasesList, isRestore = true)
    }


如何在Java中实现一个
suspend fun

可挂起函数是Kotlin添加的一个特性,并且是它独有的。在Java中,您无法轻松创建甚至调用挂起函数


您可以忽略原始函数是可挂起的这一事实,并将其视为常规函数,但如果库广泛使用协程,则很难将其移植到Java。

Java中最接近的东西可能是a或a

Spring生态系统是一种流行的反应流实现


无论您使用何种技术,以保留原始代码并发性的方式进行移植可能并不简单。

我很好奇,移植到Java的原因是什么?最简单的方法是在Kotlin中编写包装代码,并声明一个非挂起API,例如使用futures。但这取决于“允许”编写一些Kotlin代码,因此我的问题是:等等,您想从Java调用挂起函数吗?或者将他们转化?如果您转换一个挂起函数,您可能会将问题进一步转移,因为该函数可能会调用其他挂起函数。如果是这样的话,您是否正在转换所有内容?实际上,我在第一篇评论中提到的内容已经在这里描述过了:我正在将库转换为Java,因为我比Kotlin更喜欢它。另外,我想添加新的功能,对我来说维护它会更容易,因为我比Kotlin更熟悉Java。