【发布时间】:2021-07-09 19:25:05
【问题描述】:
如何构造Collection<Map<String, ?>>的实例?
// works:
Collection<?> collection = new ArrayList<Object>();
ArrayList<?> arrayList = new ArrayList<Object>();
Map<String, ?> map = new HashMap<String, Object>();
HashMap<String, ?> hashMap = new HashMap<String, Object>();
Collection<Map<String, Object>> collectionOfMaps = new ArrayList<Map<String, Object>>();
ArrayList<HashMap<String, Object>> arrayListOfHashMaps = new ArrayList<HashMap<String, Object>>();
// error:
ArrayList<HashMap<String, ?>> arrayListOfHashMapsWithQuestionMark = new ArrayList<HashMap<String, Object>>();
最后一行没有编译并出现以下错误:
incompatible types: java.util.ArrayList<java.util.HashMap<java.lang.String,java.lang.Object>> cannot be converted to java.util.ArrayList<java.util.HashMap<java.lang.String,?>>
为什么arrayListOfHashMapsWithQuestionMark Object 对问号类型无效?
【问题讨论】:
-
不使用菱形运算符有什么意义?
标签: java generics collections