0

All

I have below define :

JsonResponse.class as below:

public abstract class JsonResponse<T> extends AbstractResponse {
private T jsonObject;

public JsonResponse(HttpResponse httpResponse, Class<T> classT) {
    super(httpResponse);
    jsonObject = new Gson().fromJson(
            ResponseUtils.getStringContent(getHttpResponse()), classT);
}

public T getJsonObject() {
    return jsonObject;
}

}

But below class i want to new and return as:

return new JsonResponse<T>(response, classT);

but I can't compile it with error, would you please take a look at it . Thank you .

public class JsonResponseHandler<T> implements ResponseHandler<JsonResponse<T>> {

private Class<T> classT;

public JsonResponseHandler(Class<T> classT) {
    this.classT = classT;

}

@Override
public JsonResponse<T> handleResponse(HttpResponse response)
        throws ClientProtocolException, IOException {

    return new  JsonResponse<T>(response, classT) ; //compile  always error
}

}
Ankush soni
  • 1,439
  • 1
  • 15
  • 30
Jerry Cai
  • 571
  • 2
  • 8
  • 18

1 Answers1

0
public JsonResponse<T> handleResponse(HttpResponse response)
    throws ClientProtocolException, IOException {

return new  JsonResponse<T>(response, classT) ; //compile  always error
}

2 issues:

  • JsonResponse is abstract.

  • You're constantly redeclaring the genericism:

    public JsonResponse handleResponse(HttpResponse response)
    throws ClientProtocolException, IOException {
    
        return new  JsonResponse(response, classT) ; //compile  always error
    }
    

It's already generic and should have reifiable type params.

nanofarad
  • 40,330
  • 4
  • 86
  • 117