[英]how to use gson.fromJson with generic type T
我正在尝试构建一个通用方法,它将调用任何 API 特定端点,每个端点都返回自己的 object 类型。
private <T> T callApi(String endpoint) {
T responseSuccessObject = null;
String responseBody = ...
responseSuccessObject = (T) gson.fromJson(responseBody, responseSuccessObject.getClass());
}
以上不起作用(因 null 指针异常而失败)
也试过这个:
private <T> T callApi(String endpoint) {
T responseSuccessObject = (T) new Object();
String responseBody = ...
responseSuccessObject = (T) gson.fromJson(responseBody, responseSuccessObject.getClass());
}
这失败了:
com.xx.AuthResponseModel is in unnamed module of loader org.apache.felix.framework.BundleWiringImpl$BundleClassLoader @58bd8c78)
我已经看到了一个可能的解决方案,方法是传入所需的 class 的虚拟 object,但这不是一个理想的选择,因为它需要添加类型参数并将其传递到一长串调用中。
不知道这将如何工作。
private <T> T callApi(Class<T> type, String endpoint) {
T responseSuccessObject = null;
String responseBody = ...
responseSuccessObject = (T) gson.fromJson(responseBody, ?);
}
你要找的只是
private <T> T callApi(Class<T> type, String endpoint) {
T responseSuccessObject = null;
String responseBody = ...
responseSuccessObject = (T) gson.fromJson(responseBody, type);
}
如果有避免传递Class
object 的解决方案,Gson 已经使用它。 没有。 要了解更多信息,请研究类型擦除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.