【发布时间】:2018-08-15 13:08:27
【问题描述】:
我正在切换到适用于 Android 的 Kotlin,但我很难理解泛型和绑定类引用的行为。 在 java 中,我可以使用 Moshi 的 lib 序列化一个对象,其中包含以下几行:
Moshi moshi = new Moshi.Builder().build();
String string = moshi.adapter(CredentialsResponse.class).toJson(body);
在 Kotlin 中:
val moshi = Moshi.Builder().build()
var string = moshi.adapter(CredentialsResponse::class.java).toJson(body)
如果我想从实例中获取类,我找到了两个选项,但一个不起作用,我不明白为什么: 此代码有效:
fun testStack(body: CredentialsResponse) {
val moshi = Moshi.Builder().build()
var string = moshi.adapter(body.javaClass).toJson(body)
}
但此代码显示类型不匹配错误
fun testStack(body: CredentialsResponse) {
val moshi = Moshi.Builder().build()
var string = moshi.adapter(body::class.java).toJson(body)
}
AFAIK,自 1.1 (https://kotlinlang.org/docs/reference/reflection.html#bound-class-references-since-11) 起允许此调用,那么我错过了什么?
【问题讨论】:
-
你能发布确切的错误信息吗?你使用什么编译器版本?
-
完成! @TheOperator