我有两个简单的课程。
包含类变量名称的父类。
扩展父级的子级类。
方法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;
}
}