我正在爲我的android項目嘗試在Kotlin語言中實現一些特定的GSON TypeAdapter。在Kotlin中使用TypeAdapter實現TypeAdapterFactory
我現在面臨的問題是編譯誤差不能推斷類型:Type inference failed: 'T' cannot capture 'in (T..T?'. Type parameter has an upper bound 'Enum<T>' that cannot be satisfied capturing 'in' projection
的代碼如下:
class SmartEnumTypeAdapterFactory(fallbackKey: String) : TypeAdapterFactory {
private val fallbackKey = fallbackKey.toLowerCase(Locale.US)
override fun <T : Any> create(gson: Gson?, type: TypeToken<T>): TypeAdapter<T>? {
val rawType = type.rawType
return if (!rawType.isEnum) null else SmartEnumTypeAdapter(rawType)
}
class SmartEnumTypeAdapter<T : Enum<T>>(classOfT: Class<T>) : TypeAdapter<T>() {
override fun write(out: JsonWriter?, value: T) {
TODO("not implemented")
}
override fun read(`in`: JsonReader?): T {
TODO("not implemented")
}
}
}
我想有classOfT: Class<T>
作爲參數TypeAdapter的原因是出這個問題的背景。
這是一個真正棘手的情況下......您是否嘗試過用Java實現這個東西?因爲那時你可以轉換爲Kotlin,看看它是否有效,但到目前爲止,我還沒有得到這兩種語言的工作。 – Robin