aio*_*obe 54
您不能拥有泛型类的数组.Java根本不支持它.
您应该考虑使用集合而不是数组.例如,
public static ArrayList<List<MyObject>> a = new ArrayList<List<MyObject>();
Run Code Online (Sandbox Code Playgroud)
另一个"解决方法"是创建这样的辅助类
class MyObjectArrayList extends ArrayList<MyObject> { }
Run Code Online (Sandbox Code Playgroud)
然后创建一个数组MyObjectArrayList
.
这是一篇很好的文章,说明为什么语言中不允许这样做.本文给出了以下示例:如果允许,可能会发生什么:
List<String>[] lsa = new List<String>[10]; // illegal
Object[] oa = lsa; // OK because List<String> is a subtype of Object
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[0] = li;
String s = lsa[0].get(0);
Run Code Online (Sandbox Code Playgroud)
创建通用数组比使用List更简单.
首先,让我们
public static ArrayList<myObject>[] a = new ArrayList[2];
Run Code Online (Sandbox Code Playgroud)
然后初始化
for(int i = 0; i < a.length; i++) {
a[i] = new ArrayList<myObject>();
}
Run Code Online (Sandbox Code Playgroud)
你可以做
public static ArrayList<myObject>[] a = (ArrayList<myObject>[])new ArrayList<?>[2];
Run Code Online (Sandbox Code Playgroud)
要么
public static ArrayList<myObject>[] a = (ArrayList<myObject>[])new ArrayList[2];
Run Code Online (Sandbox Code Playgroud)
(前者可能更好.)两者都会导致未经检查的警告,您可以使用以下几点忽略或抑制:@SuppressWarnings("unchecked")