java - 如何使 cxf jax-rs response.readEntity 成为通用的

标签 java generics jax-rs cxf

下面的代码工作正常。我需要对所有请求重用此方法。如何使其成为泛型?

public class ApiResponse {

}


public class QuoteRespWrapper extends ApiResponse{
    private String responseType;
    private QuoteRespValue responseValue;
}


public class PolicyRespWrapper extends ApiResponse{
    private String responseType;
    private PolicyRespValue responseValue;
}



public QuoteRespWrapper callService(String endPoint, String payload, Class<? extends ApiResponse> respClass) throws Exception {
    private static List<JacksonJsonProvider> providerList = singletonList(JacksonConfig.jacksonJsonProvider());
    String userName="user1";
    String password="password1";
    WebClient client = WebClient.create(endPoint, providerList, userName, password, null);
    Response webClientresponse = client.post(payload);
    QuoteRespWrapper strResponse = webClientresponse.readEntity(QuoteRespWrapper.class);
    return strResponse;
}

我需要根据类类型修改以下行。它可以是 ApiResponse 的任何子类(QuoteRespWrapper、PolicyRespWrapper,....)。我需要通过 动态参数 .class 来获取响应。

QuoteRespWrapper strResponse = webClientresponse.readEntity(QuoteRespWrapper.class);

最佳答案

您可以使用toString按预期生成类名输出(例如class java.lang.String):

webClientresponse.readEntity(respClass.toString());

关于java - 如何使 cxf jax-rs response.readEntity 成为通用的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53292824/

相关文章:

java - 如何创建包含从 1 到 n 的所有数字的二叉搜索树

Java 泛型 : Does "T2 extends T1" imply "T1 super T2"?

java - Jersey(JAX-RS)如何使用多个可选参数映射路径

c# - 如何解决Operator '!=' cannot be applyed to operands of type 'T' and 'T'

c# - 在给定 IEnumerable 和成员数据类型的情况下创建通用 IEnumerable<T>

java - 如何处理 SQL 查询 IN 子句中使用的可选参数

java - JAX-RS 将 JSON 子属性解码到 HashMap

java - struts2 Action 中的验证异常

java - 如何从使用tika提取的文本中获取频繁出现的词

java - 简单的Java数组问题