我有這樣一個方法:如何在Java中調用參數化方法?
private static <T extends HomerMessage> HomerMessage postRequest(String path, HomerMessage json) throws IOException, HomerDoh
{
RequestBody body = RequestBody.create(JSON, toJson(json));
Request request = new Request.Builder().url("http://" + path).post(body).build();
String response = new OkHttpClient().newCall(request).execute().body().string();
System.out.println(response);
JsonNode responseNode = new ObjectMapper().readValue(response, JsonNode.class);
if(!"200".equals(responseNode.get("status")))
{
throw readData(response, new TypeReference<HomerDoh>() {});
}
return readData(response, new TypeReference<T>() {});
}
private static <T> T readData(String is, TypeReference<T> ref) throws IOException
{
return mapper.readValue(is, ref);
}
一切工作正常,但我無法弄清楚如何調用它... 我曾嘗試:
AuthResponse ar = HomerClient.postRequest(url + "/api/v1/session", auth);
最後一個表達式不編譯。
如何在Java中調用參數化方法?
AuthResponse延伸HomerMessage
你會得到什麼錯誤? – SLaks
順便說一句,那種方法是完全破碎的;它需要一個'TypeReference'作爲參數。 – SLaks