今天解题的时候一直有一个错误编译器过不去。后来才有黑马上朋友告诉我是数组和泛型的问题。那就是java1.5不允许创建泛型数组。虽然我知道了错误的所在,但我不了解错误的原因。为什么java语法要做这样的规定呢?我上sun的官网找了下资料,倒是找到了关于这个问题的描述,但鉴于英文我看的有点是懂非懂。下面是它举的两个对比的例子,希望各位黑马的朋友能帮我看看他们到底有什么不同?还有为什么java不支持带泛型的数组呢?
java代码:
// Not really allowed.
List<String>[] lsa = new List<String>[10];
Object o = lsa;
Object[] oa = (Object[]) o;
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
// Unsound, but passes run time store check
oa[1] = li;
// Run-time error: ClassCastException.
String s = lsa[1].get(0);
java代码:
// OK, array of unbounded wildcard type.
List<?>[] lsa = new List<?>[10];
Object o = lsa;
Object[] oa = (Object[]) o;
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
// Correct.
oa[1] = li;
// Run time error, but cast is explicit.
String s = (String) lsa[1].get(0); |