私はアンドロイドプロジェクトのためにKotlin言語でいくつかの特定のGSON TypeAdapterを実装しようとしています。 Type inference failed: 'T' cannot capture 'in (T..T?'. Type parameter has an upper bound 'Enum<T>' that cannot be satisfied capturing 'in' projection
TypeAdapterをKotlinに実装するタイプアダプターファクトリーを実装する
コードは以下の通りです:
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")
}
}
}
私はTypeAdapterのパラメータとしてclassOfT: Class<T>
を持ちたい理由の外にある
私が直面してる問題は、タイプが推測できないとエラーをコンパイルしていますこの問題の文脈。
これは本当にトリッキーなケースです...あなたはJavaでこの事を実装しようとしたことがありますか?それで、あなたはKotlinに変換し、それがうまくいくかどうかを見ることができますが、これまでのところ、どちらの言語でもこれを動作させることはできませんでした。 – Robin