2017-09-25 3 views
0

Je connais beaucoup de questions similaires ici dans StackOverflow, mais rien n'a résolu le mien.seules les classes sont autorisées sur le côté gauche d'un littéral de classe

J'ai une classe de données générique:

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

Je suis en train d'utiliser comme ceci:

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

IDE montre erreur: que les classes sont admis sur le côté gauche d'une classe littéral

Comment résoudre ce problème? Merci d'avance.

+0

J'apprécie votre vote négatif. J'ai vraiment besoin d'aide. S'il vous plaît poster la raison ou poster la solution –

Répondre

2

Vous ne pouvez pas utiliser les médicaments génériques avec class, aussi facilement observable ici:

List<Int>::class.java 

Il vous donne la même erreur. Pour utiliser le typ générique GSON désérialisation, faire ce qui est suggéré ici:

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

EDIT:

En Kotlin il ressemble à ceci:

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

Voici une petite preuve de concept, j'ai écrit:

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

Merci, mais pouvez-vous voir ma classe de données? Je dois passer le type de résultat. –

+0

Bien sûr, voir mon édition – s1m0nw1

+0

Ne fonctionne pas ..... –