泛型:建议正确的语法

时间:2011-08-14 11:51:27

标签: java

  1. List<String>[] stringList = new List<?>[10]; 给出Type mismatch: cannot convert from List<?>[] to List<String>[]

  2. 如果我使用以下声明 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)

1 个答案:

答案 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