我发现我的 GSON 问题都与这样一个事实有关,虽然我的返回类型不是参数化对象,但它应该是。现在我需要使用带有参数类型的 Gson.fromJson 方法来指定返回类型,以便 GSON 为我处理它。
我创建了一个名为 RestResponse 的通用类,例如:
public class RestResponse<T> {
private String errorMessage;
private int errorReason;
private T result;
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "RestResponse [errorMessage=" + errorMessage + ", result=" + result + "]";
}
/**
* Does this response contain an error?
* @return true if in error
*/
public boolean isInError(){
return getErrorMessage()!=null;
}
/**
* @return the errorMessage
*/
public String getErrorMessage() {
return errorMessage;
}
/**
* @param errorMessage the errorMessage to set
*/
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
/**
* The error reason code
* @return the errorReason
*/
public int getErrorReason() {
return errorReason;
}
/**
* The error reason code
* @param errorReason the errorReason to set
*/
public void setErrorReason(int errorReason) {
this.errorReason = errorReason;
}
/**
* The result of the method call
* @return the result or null if nothing was returned
*/
public final T getResult() {
return result;
}
/**
* The result of the method call
* @param result the result to set or null if nothing was returned
*/
public final void setResult(T result) {
this.result = result;
}
}
现在我想在另一边创建结果类型。我有一个通用方法,用于解码这些东西并抛出异常或返回结果。
所以我的方法是这样的:
public Object submitUrl(String url, Class<?> clazz) throws AjApiException {
其中 clazz 是将在 RestResponse 上指定的类型。
然后我在传递给 GSON 之前创建 RestResponse:
Type typeOfT = new TypeToken<RestResponse<clazz>>(){}.getType(); //1-->What goes here?
RestResponse<clazz> restResponse; //2-->and here?
它会出错。有人能告诉我这些地方用什么代替了 clazz 吗?