相关疑难解决方法(0)

关于Java Generics操作的奇怪问题

下面的代码显示我可以在Map中插入不兼容的类型,但是当我无法从中检索元素时.在下面的例子中,我可以将两个整数放入Map中,但如果我取消注释最后两行,我将得到ClassCastException.这是JDK的错误,或者我错过了什么,因为我记得Java通用保证我们不能将不兼容的类型插入到泛型集合类中.

公共类HelloWorld {

private static class MapResultExtractor<K, V> {

    public Map<K, V> extract(Iterator<List<Object>> iter)
            throws IOException {
        Map<K, V> map = new HashMap<K, V>();
        while (iter.hasNext()) {
            List<Object> tuple = iter.next();
            K key = (K) (tuple.get(0) == null ? null : tuple.get(0));
            V value = (V) (tuple.get(1) == null ? null : tuple.get(1));
            map.put(key, value);
        }

        return map;
    }

}

public static void main(String[] args) throws IOException {
    MapResultExtractor<String, Integer> extractor = new MapResultExtractor<String, Integer>();
    List<Object> subList = new ArrayList<Object>(); …
Run Code Online (Sandbox Code Playgroud)

java generics

2
推荐指数
1
解决办法
289
查看次数

标签 统计

generics ×1

java ×1