List<String>[] stringList = new List<?>[10];
给出Type mismatch: cannot convert from List<?>[] to List<String>[]
如果我使用以下声明
List<? extends Number> inLi = new ArrayList<Integer>();
然后inLi. inLi.add(5);
提供The method add(int, capture#1-of ? extends Number) in the type List<capture#1-of ? extends Number> is not applicable for the arguments (int)
答案 0 :(得分:5)
没有。 1不起作用,因为List<String>[]
表示字符串列表数组,而List<?>[]
表示任何列表数组。在List<String>[]
数组中,您不能拥有List<Integer>
元素,但List<?>[]
可能包含List<Integer>
元素,因此类型不匹配错误。
简而言之,在Java中,不可能像这样创建一个通用数组:
Foo<T>[] fooArray = new Foo<T>[];
但你可以像这样创建一个通用数组:
@SuppressWarnings("unchecked") // optional but informs the compiler
// not to generate warning message
List<String>[] stringList = new ArrayList[10];
有关详细信息,请参阅this。
关于2,请参阅this。