Java-无法从返回类型Map <string,list <parent =“” >>转换为Map <string,list <child =“” >>

时间:2018-12-01 02:19:12

标签: java generics

我有两个简单的课程。

包含类变量名称的父类。

扩展父级的子级类。

方法foo()接受从Parent扩展的对象列表,并返回一个Map,该Map的键类型为String,而List的值包含Parent。

创建的数据仅用于设置问题。

Cannot cast from Map<String, List<Parent>> to Map<String,List<Child>>

以上是我从Eclipse中得到的错误。

所以问题是,即使孩子扩展了父母,我怎么也不能投给孩子?

package com.example.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

class Parent {
    String name;
}

class Child extends Parent {

}

public class GenericMain {

    public static void main(String[] args) {
        List<Parent> pList = new ArrayList<>();
        pList.add(new Child());
        Map<String, List<Child>> list = (Map<String, List<Child>>) foo(pList); // Unable to cast

    }

    public static Map<String, List<Parent>> foo(List<? extends Parent> pList) {
        List<Parent> list = new ArrayList<>();
        list.add(pList.get(0));

        Map<String, List<Parent>> pMap = new HashMap<>();
        pMap.put("1", list);
        return pMap;
    }

}

0 个答案:

没有答案