java - Java 迭代器返回的结果的泛型类型不兼容

标签 java generics iterator incompatibility

我有一个 Map 类型的对象,我试图用迭代器迭代它。但是编译不通过,代码如下。

// Returned from other method, and the run time type is Map<String, B>
Map<String, ? extends A> map = ...

// Option 1: cannot pass.
Iterator<Map.Entry<String, ? extends A>> iterator = map.entrySet().iterator();

// Option 2: cannot pass either.
// Where B is a subclass extends from A
Iterator<Map.Entry<String, B>> iterator = map.entrySet().iterator();

有人可以帮我吗?谢谢。

最佳答案

我建议你使用foreach循环而不是直接使用Iterator

Map<String, ? extends A> map = new HashMap<>();
for (Map.Entry<String, ? extends A> entry : map.entrySet()) {
    String key = entry.getKey();
    A value = entry.getValue();
}

关于java - Java 迭代器返回的结果的泛型类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35305885/

相关文章:

java - 成功执行servlet后如何在jsp中生成成功警报?

function - 在不调用 typescript 中的函数的情况下获取泛型函数的类型

rust - 如何在 Rust 中正确使用 Iterator::chain

java.lang.NoSuchMethodException : getTetherableIfaces on Lollipop 异常

java - 自定义配置后,Cordova 无法为 Android 构建

java - 什么是克拉斯和克拉斯克拉斯

javascript - TypeScript:是否可以定义接受不同类型参数的可变参数函数?

swift - swift 中的一等泛型函数?

java - 迭代器删除/编辑是安全的,但是我还需要编辑以下所有迭代

c++ - 使用迭代器按索引删除 vector ?