检查我的自定义类。如果我将DoSomething()更改为
final Custom<User> _custom = new Custom<>(new TypeToken<Custom<User>.Response<User>>(){}, "");则调试日志为:"com.application.models.Custom$Response<com.application.models.User>" serverResponse: ""
但如果DoSomething是:
final Custom<T> _custom = new Custom<>(new TypeToken<Custom<T>.Response<T>>(){}, "");调试日志为:
"com.application.models.Custom$Response<T>" serverResponse: "我有一个这样的类:
public class Main
{
public static <T> void DoSomething()
{
final Custom<T> _custom = new Custom<>(new TypeToken<Custom<T>.Response<T>>(){}, "");
}
}//我在变量右边添加了调试日志
public class Custom<T>
{
private TypeToken<Response<T>> _responseType; _response: null
private Response<T> _response; _response: null
private String _serverResponse; _serverResponse = null;
public Custom(TypeToken<Response<T>> responseType, String serverResponse) `responseType: "com.application.models.Custom$Response<T>" serverResponse: "`
{
this._responseType = responseType;
this._serverResponse = serverResponse;
}
public class Response<t>
{
private List<t> data = null;
public List<t> GetData()
{
return this.data;
}
}
}这就是我称之为Main的地方..
public class User
{
public int Id;
public void Test()
{
Main.<User>DoSomething();
}
}发布于 2016-11-07 17:32:30
Java主要使用编译时泛型,这意味着当你编译时,你的泛型就消失了。它们只是一个编译时检查。这回答了你的问题吗?谷歌类型擦除。
https://stackoverflow.com/questions/40461633
复制相似问题