gpt4 book ai didi

Java - 获取当前的泛型类

转载 作者:行者123 更新时间:2023-12-02 04:49:48 25 4
gpt4 key购买 nike

我看过很多关于这个论点的帖子,但这是我第一次使用泛型/反射。我想创建一些方法来包装 JAX-WS 调用(doPost、doGet 等)

为此目的,JAX-WS 有一个如下方法:

Integer resp = client.target(url).request().post(Entity.entity(user, MediaType.APPLICATION_JSON), Integer.class);

所以它想要作为最后一个参数,“返回类型”。

为此,我创建了一个类来包装 post 方法:

public class GenericPost<I> {
public static I doPost(String name, Object entity) {
String url = Constants.SERVICE_HOST_NAME + method + "/";
Client client = ClientBuilder.newClient();
I resp = client.target(url).request().post(Entity.entity(entity, MediaType.APPLICATION_JSON), /* How i can tell that here i want i.class ?*/);

return resp;
}
}

正如我在代码中所描述的,我如何告诉该方法最后一个参数是 I(通用)类?

我会像这样使用这个方法:

GenericPost<Integer> postInteger = GenericPost<Integer>.doPost("something", arg);
GenericPost<String> postInteger = GenericPost<String>.doPost("something", arg);

最佳答案

在非泛型类中创建泛型方法,并传递Class<T>作为参数:

public class GenericPost {
public static <T> T doPost(String name, Object entity, Class<T> clazz) {
String url = Constants.SERVICE_HOST_NAME + method + "/";
Client client = ClientBuilder.newClient();
T resp = client.target(url).request().post(Entity.entity(entity, MediaType.APPLICATION_JSON), clazz);
return resp;
}
}

并像这样使用它:

Integer postInteger = GenericPost.doPost("something", arg, Integer.class);
String postString = GenericPost.doPost("something", arg, String.class);

关于Java - 获取当前的泛型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29332033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com