gpt4 book ai didi

java - 如何在 Map.Entry 中使用泛型方法参数?

转载 作者:行者123 更新时间:2023-11-30 07:49:26 25 4
gpt4 key购买 nike

我想创建一个采用通用 List 的方法的 Map.Entry的。 key 应始终为 String 类型,值可以是任何值。

然后我想提供如下条目:

public void test() {
List<Map.Entry<String, String>> strings;
apply(strings);

List<Map.Entry<String, Integer>> integers;
apply(integers);
}

private void apply(List<Map.Entry<String, ?>> entry) {
}

private void apply(List<Map.Entry<String, Object>> entry) {
}

但是:都不是apply()方法在这里不起作用。旁注:我无法更改条目的类型。表示 <String, String><String, Integer>必须保持原样。

我怎样才能将它们放入通用的应用方法中?

最佳答案

制作apply通用方法:

private <T> void apply(List<Map.Entry<String, T>> entry) {
}

请注意,这取决于您希望在 apply 的正文中执行的操作, 使用 private void apply(List<? extends Map.Entry<String, ?>> entry)签名可能不够。

例如,如果您希望将列表中一个条目的值更改为另一个条目的值。

以下不会通过编译:

private void apply(List<? extends Map.Entry<String, ?>> entry) {
entry.get(1).setValue (entry.get(0).getValue());
}

但这会:

private <T> void apply(List<Map.Entry<String,T>> entry) {
entry.get(1).setValue (entry.get(0).getValue());
}

关于java - 如何在 Map.Entry 中使用泛型方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48560717/

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