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

标签 java generics

我想创建一个采用通用 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 方法?

最佳答案

制作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/

相关文章:

java - 将空标签解码到集合的新实例中

java - 十六进制转字符串中文,中文十六进制2字节,英文十六进制1字节?

java - 使用泛型和动态类类型返回类型转换

java - 需要帮助将 Java 泛型传递给 Collections.sort()

c# - 如何在静态类中创建通用静态字典

ios - swift : Is there a way to test if object cast as AnyObject conforms to Equatable?

java - 如何将 HTML 表数据绑定(bind)到 Spring Controller 中的 java 对象?

java - 无需 IDE 即可学习 JavaFX

java - 我应该序列化 keyPressed 吗?

r - 绘图新方法 - 如何导出?