data class TestObject(val test: Int)
public class ApiResult<T> {
private int code;
private int subcode;
private String msg;
private T data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public boolean isOk() {
return code == 0;
}
@Override
public String toString() {
return "ApiResult{" +
"code='" + code + '\'' +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
public int getSubcode() {
return subcode;
}
public void setSubcode(int subcode) {
this.subcode = subcode;
}
}
test code like this
@Test
fun testFunListGson() {
val result = data<List<TestObject>>()
assertThat(result.data[0].test).isEqualTo(10)
}
@Test
fun testDirectListGson() {
val result = gson.fromJson<ApiResult<List<TestObject>>>(JSON_LIST_STRING)
assertThat(result.data[0].test).isEqualTo(10)
}
fun <T> data(): ApiResult<T> {
return gson.fromJson(JSON_LIST_STRING)
}
Expect testFunListGson will pass, but it failed like this
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.xxx.GsonTest$TestObject
It looks like it's not getting past the underneath generic type.
I have a json like this
model like this
test code like this
Expect
testFunListGson
will pass, but it failed like thisIt looks like it's not getting past the underneath generic type.