如何在Java中访问Kotlin库密封类作为错误处理?

如何在Java中访问Kotlin库密封类作为错误处理?,java,kotlin,type-conversion,lib,Java,Kotlin,Type Conversion,Lib,我已经在代码中导入了一个库,它使用密封类作为错误处理。库是用Kotlin编写的,我的代码是用Java编写的。除此之外,一切都很顺利 我试图保存资源的代码示例: String dogID = "1234"; DogClient dogClient = new dogClient(); //params not important. Resource<DogDto> dogDtoResource = dogClient.fetchDog(dogID); //Probl

我已经在代码中导入了一个库,它使用密封类作为错误处理。库是用Kotlin编写的,我的代码是用Java编写的。除此之外,一切都很顺利

我试图保存资源的代码示例:

String dogID = "1234";
DogClient dogClient = new dogClient(); //params not important.
Resource<DogDto> dogDtoResource = dogClient.fetchDog(dogID); //Problem Statement
我完全不知道如何将其翻译成Java,也没有找到任何文章/文档来帮助我

它说它无法访问Kotlin.coroutines.Continuation

问题可能不是
Resource
sealed类,而是您试图调用的
fetchDog
函数很可能是Kotlin中的
suspend
函数(使用Kotlin协程)

您可以检查此特定问题。它基本上归结为从Kotlin代码中提供一个非挂起函数,您可以从Java调用该函数


如果无法修改库,可以向项目中添加一个简单的Kotlin文件来编写此“桥接”函数(但这意味着您需要在项目中设置Kotlin编译)。

因此fetchDog的sig类似于:Resource[T]fetchDog(ID)?您不能访问资源,返回类型?或者您可以访问类型资源,但不知道Java中错误模式匹配的等价物吗?您可以共享
fetchDog
的代码吗?它很可能是一个挂起函数,这就是为什么不能从Java调用它的原因。它是编译代码,所以我很难确定这是真正的问题。我真的很感谢你的帮助!
sealed class Resource<in T> {
    data class Success<T>(val data: T) : Resource<T>()
    data class Error(val exception: Throwable, val statusCode: Int?) : Resource<Any>()
}
when(dogClient.fetchDog(dogId)) {
    is Resource.Success -> result.data;
    is Resource.Error -> throw new Exception();