Überprüfen Sie meine benutzerdefinierte Klasse. Wenn ich DoSomething(), umGenerische Typen Java
final Custom<User> _custom = new Custom<>(new TypeToken<Custom<User>.Response<User>>(){}, "");
Dann wird das Debug-Protokoll zu ändern ist: "com.application.models.Custom$Response<com.application.models.User>" serverResponse: ""
Aber wenn DoSomething ist:
final Custom<T> _custom = new Custom<>(new TypeToken<Custom<T>.Response<T>>(){}, "");
Das Debug-Protokoll ist:
"com.application.models.Custom$Response<T>" serverResponse: "
I habe eine Klasse wie diese:
// Ich habe das Debug-Protokoll auf der rechten Seite der Variablen
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;
}
}
}
Dies ist, wo ich Haupt nennen ..
public class User
{
public int Id;
public void Test()
{
Main.<User>DoSomething();
}
}
Was meinst du mit * aus irgendeinem Grund, wenn ich das T noch generisch kompiliere, wenn ich Custom * erstelle? – Blackbelt
Ich nehme 'Main main = new User <>();' ist ein Tippfehler und sollte 'Main main = new Main <>();', oder? –
Eran
Ja, ich habe meine Antwort aktualisiert –