public class Declaration {}
public class Class_object extends Declaration{}
上面是我的类声明,所以基本上Class_object是类声明的子类。
Map<String,ArrayList<Declaration>> structure = new HashMap<String,ArrayList<Declaration>>();
ArrayList<Class_object> co = new ArrayList<Class_object>();
structure.put("CLASS", co);//here gives error:The method put(String, ArrayList<Declaration>) in the type Map<String,ArrayList<Declaration>> is not applicable for the arguments (String, ArrayList<Class_object>)
在另一个类中,我尝试创建一个hashmap来包含Decla的不同子类,但它给了我错误信息。 谁能告诉我如何解决它?
答案 0 :(得分:1)
泛型是不变的。你可以做到
Map<String, List<? extends Declaration>> structure
= new HashMap<String, List<? extends Declaration>>();
答案 1 :(得分:0)
您必须使用extends
关键字才能将Declaration
的子类放入地图中。像这样定义:
Map<String,ArrayList<? extends Declaration>> structure = new HashMap<String,ArrayList<? extends Declaration>>();
? extends Declaration
让java知道您希望能够使用任何扩展Decla的类,例如Class_object。