gpt4 book ai didi

java - 如何为 Map> 和 MultivaluedMap 定义通用方法?

转载 作者:行者123 更新时间:2023-12-02 03:25:47 26 4
gpt4 key购买 nike

我正在为各种平台编写一个 http 客户端库。(Java SE、Java EE)

通过我的 Java SE 实现,我做到了

public void doSome(..., Map<String, List<Object>> params, ...);

通过我的 Java EE 实现,我做到了

public void doSome(..., MultivaluedMap<String, Object> params, ...);

如果我想为这些方法定义一个通用抽象类,我如何为这两者定义一个方法 Map<String, List<Object>>MultivaluedMap<String, Object> ?有没有一种优雅的方法可以在没有简单的 T 的情况下做到这一点?

请注意Multivalued<K, V>延伸Map<K, List<V>> .

我目前只能做到这样。

public abstract class AbstractClient {

public void doSome(..., Map<String, List<Object>> params, ...);
}


public class JavaEEClient extends AbstractClient {

static <K, V> MultivaluedMap<K, V> multivalued(Map<K, List<V>> map) {
if (map == null) {
return null;
}
if (map instanceof MultivaluedMap) {
return (MultivaluedMap<K, V>) map;
}
final MultivaluedMap<K, V> multi = new MultivaluedHashMap<>(map.size());
multi.putAll(map);
return multi;
}

public void doSome(..., MultivaluedMap<String, Object> params, ...) {
}

@Override
public void doSome(..., Map<String, List<Object>> params, ...) {
doSome(..., multivalued(params), ...);
}
}

更新

我真的不得不承认我自己是被误导的。实际上,我从仅使用 JAX-RS 方法开始,并开始使用 URLConnection 添加适用于 Java SE 的方法。 .

没关系。直接MultivaluedMap因为WebTargetInvocation s 接受 MultivaluedMap .

当我开始为 URLConnection 添加类和方法时s,问题出现了。

我想我必须坚持Map<String, List<Object>>并使用我的 mutivalued实用方法。

最佳答案

如果你这么说MultivaluedMap<K, V>延伸Map<K, List<V>>那么你可以这样做:

public abstract class AbstractClass {

public void doSome(..., Map<String, List<Object>> params, ...)
...
}

它将接受 MultivaluedMap 和 Map。

关于java - 如何为 Map<String, List<Object>> 和 MultivaluedMap<String, Object> 定义通用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932167/

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