2017-09-25 10 views
0

私はStackOverflowで多くの似たような質問がありますが、何も解決しませんでした。クラスリテラルの左側にあるクラスのみが許可されています

私は一般的なデータクラスを持っている:

data class ServiceCall<out T>(val result: T?, val exception: String?, val pagination: String?, val stringResult: String?) 

私はこのように使用しようとしています:

Gson().fromJson(json, ServiceCall<SurveyListModel>::class.java).result 

IDEがエラーを示していますのみのクラスは、クラスの左側に許可されていますリテラル

これを解決するには?前もって感謝します。

+0

私はあなたの投票をいただきありがとうございます。私は本当に助けが必要です。理由や投稿を投稿してください –

答えて

2

あなたはここのように容易に観察、classでジェネリックを使用することはできません。

List<Int>::class.java 

それはあなたに同じエラーを与えます。 GSONデシリアライズで一般的な標準を使用するには、ここで提案されているものの操作を行います。

https://stackoverflow.com/a/5554296/8073652

EDIT:

val type: Type = object : TypeToken<ServiceCall<SurveyListModel>>() {}.type 
Gson().fromJson<ServiceCall<SurveyListModel>>(json, type).result 

ここで小さな証拠だ:Kotlinで

それはこのようになります概念の、私は書いた:

class Token : TypeToken<List<Int>>() 
val x: List<Int> = Gson().fromJson(Gson().toJson(arrayOf(1)), Token().type) 
println(x) 
+0

ありがとうございます。私のデータクラスは見えますか?私は結果の型を渡す必要があります。 –

+0

確かに、私の編集を参照 – s1m0nw1

+0

動作していません..... –

関連する問題