gpt4 book ai didi

java - 包含具有通用 Map.Entry 参数的方法

转载 作者:行者123 更新时间:2023-11-29 10:09:44 25 4
gpt4 key购买 nike

我有 2 个类,它们的方法非常相似

A 类:

String getString(Set<Map.Entry<String, List<String>>> headers) {
return headers.stream().map(h -> String.join(": ", h.getKey(), h.getValue().stream().
collect(Collectors.joining(", ")))).collect(Collectors.joining(System.lineSeparator()));
}

B级

String getString(Set<Map.Entry<String, Collection<String>>> headers) {
return headers.stream().map(h -> String.join(": ", h.getKey(), h.getValue().stream().
collect(Collectors.joining(", ")))).collect(Collectors.joining(System.lineSeparator()));
}

方法参数泛型类型的唯一区别:

Set<Map.Entry<String, List<String>>> headers
Set<Map.Entry<String, Collection<String>>> headers

我不会重复代码。并寻找我可以将这两种方法合二为一的方法。

我正在尝试使用通用通配符(?super 或?extends)的不同组合来编写代码。但是失败了。例如:

Set<Map.Entry<String, ? extends Collection<String>>>

能否请您支持我如何重构这个泛型的想法。谢谢

最佳答案

你必须定义一个泛型类型 T

public <T extends Collection<String>> String getString(Set<Map.Entry<String, T>> headers) {
return headers.stream().map(h -> String.join(": ", h.getKey(), h.getValue().stream().collect(Collectors.joining(", ")))).collect(Collectors.joining(System.lineSeparator()));
}

关于java - 包含具有通用 Map.Entry 参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916768/

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