gpt4 book ai didi

java - 使用泛型重构

转载 作者:行者123 更新时间:2023-12-04 05:46:33 31 4
gpt4 key购买 nike

我习惯于在类型化集合中使用泛型,但我从未真正使用它们来开发某些东西。

我有几个这样的类(class):

public class LogInfoWsClient extends GenericWsClient {
public void sendLogInfo(List<LogInfo> logInfoList) {
WebResource ws = super.getWebResource("/services/logInfo");
try {
String response = ws.accept(MediaType.TEXT_HTML).type(MediaType.APPLICATION_XML).put(String.class, new GenericEntity<List<LogInfo>>(logInfoList) {
});
}
}

唯一在一个和另一个之间变化的是服务字符串(“/services/info”)和列表的类型(在这种情况下为 LogInfo)

我已经将几个方法重构为 GenericWsClient 类,但我的目标是拥有可以像这样使用的东西:
List<LogInfo> myList = database.getList();
SuperGenericClient<List<LogInfo>> superClient = new SuperGenericClient<List<LogInfo>>();
superClient.send(myList,"/services/logInfo");

但我无法弄清楚如何做到这一点,或者即使它可能。可能吗?

最佳答案

是的,如果您查看 java.util.collection,这是可能的。例如包你会发现所有的类都是参数。

所以你的类(class)将是这样的

public SuperGenericClient<E> {       
public E getSomething() {
return E;
}
}

然后使用它,你将拥有
SuperGenericClient<String> myGenericClient = new SuperGenericClient<String>();
String something = myGenericClient.getSomething();

扩展您的示例本身,您的代码将如下所示:
public class SuperGenericClient<E> extends GenericWsClient {
public void send(List<E> entityList, String service) {
WebResource ws = super.getWebResource(service);
try {
String response = ws.accept(MediaType.TEXT_HTML).type(MediaType.APPLICATION_XML).put(String.class, new GenericEntity<E>(entityList) {
});
}
}
}

public class GenericEntity<E> {
public GenericEntity(List<E> list){

}
}

您必须阅读 this对泛型有很好的理解。

关于java - 使用泛型重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10604504/

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