java - Kotlin 密封类类型检测的 Java 等价物
问题描述
我想从 Java 中的这个 Kotlin 类中访问信息。它是通过 Gradle 库导入的。
密封类:
public sealed class Resource<in T> private constructor() {
public final data class Error public constructor(exception: kotlin.Throwable, statusCode: kotlin.Int?) : #.response.Resource<kotlin.Any> {
public final val exception: kotlin.Throwable /* compiled code */
public final val statusCode: kotlin.Int? /* compiled code */
public final operator fun component1(): kotlin.Throwable { /* compiled code */ }
public final operator fun component2(): kotlin.Int? { /* compiled code */ }
}
public final data class Success<T> public constructor(data: T) : com.tsfrm.commonlogic.response.Resource<T> {
public final val data: T /* compiled code */
public final operator fun component1(): T { /* compiled code */ }
}
}
在 Java 中,我试图确定它是 Success 还是 Error 类型,如果可能,我希望能够从中检索“statusCode”。我知道在 Kotlin 中使用 Kotlin 中的“何时”逻辑会更好,但我无法找到合适的替代品。
解决方案
你可以在 Java 中做的最好的事情是
public <T> void doResourceThing(Resource<T> r) {
if (r instanceof Success) {
Success<T> success = (Success<T>) r;
...
} else if (r instanceof Error) {
Error err = (Error) r;
...
}
}
推荐阅读
- c++ - 在主函数中使用 wchar_t
- ssl - Web 开发新手:如何使用 SSL + 数字海洋 + Bitbucket
- jboss - 在 JBOSS eap 7 中配置 HTTP 线程大小
- reactjs - React 从嵌套元素中的另一个组件更新组件
- asp.net - ASP.net Webservice 缺少 Xheader 确认电子邮件为空白
- java - 为什么我在检索 Bundle 参数时收到空指针异常?
- arrays - 如何添加或删除两个输入字段并将这些输入存储到反应数组中?
- javascript - 从数组格式化字符串创建 Javascript 数组
- moodle - Moodle课程总成绩
- google-api - Google G Suite 业务报告 API 配置