在 java 中,类型必须与声明的完全匹配。这是给定的
insertMongoDocument(String testName, Map<String, Object> input)
你不能用
Map<String, List<?>> map;
insertMongoDocument("foo", map);
尽管它看起来Map<String, List<?>>
应该是 的一个实例Map<String, Object>
,但它不是。
这是泛型似乎不遵循基本继承的另一种情况,List<SubClass>
即不是List<SuperClass>
.
如果它是真的,它会导致这个错误:
List<Integer> listI = new ArrayList<Integer>();
List<Number> listN = listI; // compile error, but let's assume OK
listN.add(1.2); // Adding a Double (which is a Number) to a list of Integer - oops!
Integer i = listI.get(0); // BOOM... ClassCastException!
线
List<Number> listN = listI;
由于现在应该是显而易见的原因,这是不允许的,这基本上就是您所看到的:您不能像转换类那样转换泛型类型。