GSONでJSONオブジェクトの配列を逆シリアル化しようとしています。だから簡単な呼び出し:Kotlinの配列の型とクラスのリテラル
val arrayOfFoo = gson.fromJson(source, Array<Foo<*>>::class.java>)
トリックを行う必要があります。しかし、タイプイレーズはFoo < *が実行時に存在しないので、クラスリテラルの左側にクラスリテラルのみが許可されているというエラーが表示されます。まあ、解決策がなければなりませんので:
生憎val arrayOfFoo = gson.fromJson<Array<Foo<*>>>(source, Array::class.java)
、今Kotlinコンパイラマジック - プリミティブ配列にラッパー型の配列を回す - 何をすべきかを確認することはできませんと教えてくれる: 「Arrayクラスリテラルが必要ですクラス型です。山括弧で指定してください。 "
しかし、待ってください:これは何秒前に動作しませんでした。今コンパイラを教えてくれるので、
Array<Foo>::class.java
を使用すると、あまりにも、動作しません:「一つの型引数はFooのために期待されています」。
私は個人的にそれを解決する方法を見ることができません。型指定された配列のクラスリテラルを与えることは不可能ですか?型は型パラメータも期待していますか?
Fooがタイプパラメータを期待していない場合、なぜそれが実際に動作するのか説明しないので、私が望んでいたものではありません。しかし、それはdefinitelly私のために働くので、ありがとう。 –