2017-09-25 12 views
0

저는 StackOverflow에서 비슷한 질문을 많이하지만, 해결 된 방법은 없습니다.클래스는 클래스 리터럴의 왼쪽에 허용됩니다.

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

I는 다음과 같이 사용하는 것을 시도하고있다 : 는 클래스가 클래스의 왼쪽에 사용할 수 있습니다 :

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

IDE에 오류가 표시

나는 일반 데이터 클래스가 문자

어떻게 해결할 수 있습니까? 미리 감사드립니다.

+0

투표 결과에 감사드립니다. 정말 도움이 필요해. 이유 또는 게시 솔루션을 게시하십시오 –

답변

2

당신은 쉽게 관찰 여기, class와 제네릭을 사용할 수 없습니다 : 그것은 당신에게 같은 오류를 제공

List<Int>::class.java 

. GSON의 직렬화의 일반 일반을 사용하려면, 여기 제안 무엇 :

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

편집 :

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

여기에 작은 증거 : 코 틀린에

은 다음과 같습니다 개념의, 나는 썼다 :

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

고마워요,하지만 내 데이터 수업을 볼 수 있습니까? 결과 유형을 전달해야합니다. –

+0

물론 편집을 참조하십시오 – s1m0nw1

+0

작동하지 않습니다 ..... –