的名单如何去除:通用阵列
类型安全:类型的表达 列表[]需要选中转换为符合
List<Object>[]
编译器警告有以下表现:
List<Object>[] arrayOfList = new List[10];
的名单如何去除:通用阵列
类型安全:类型的表达 列表[]需要选中转换为符合
List<Object>[]
编译器警告有以下表现:
List<Object>[] arrayOfList = new List[10];
据我所知的唯一方式是使用@SuppressWarnings("unchecked")
。至少如果你想避免马修回答中出现的原始类型警告。
但是你应该重新考虑你的设计。一个列表数组?这真的有必要吗?为什么不列出清单?如果它变得太复杂(List of List of List of List),使用自定义数据类型。这确实使代码更具可读性。
作为一个无关的方面说明:你应该写List<Object>[] arrayOfList
。括号是类型的一部分,而不是变量。
List arrayOfList[] = new List[10];
或
List[] arrayOfList = new List[10];
您不能在Java中使用泛型数组,因此没有理由对其进行引用。它不会是类型安全的,因此是警告。当然,您正在使用<Object>
,这意味着您的列表旨在包含任何对象。但是无法使通用数组仍然适用。
另外,请注意,上面的第二个版本(与[]附加到该类型)在Java中通常被认为是更好的样式。它们在语义上是等效的。
有多种方式:
List[] arrayOfList = new List[10];
通知,在Java中在声明时,通常在类型后面加上[],而不是变量 - 尽管Sun会阻止使用原始类型,因为它们可能会在未来的版本中被删除。List<List<Object>> listOfList = new ArrayList<List<Object>>;
如果没有编译器警告,您无法做任何变化。泛型和数组不会很好。虽然你可以用
@SuppressWarnings("unchecked")
final List<Object> arrayOfList[] = new List[10];
不幸的是压制它,由于使用type erasure的事实,泛型在Java中实现,你不能与类型参数创建一个类型的数组:
// This will give you a compiler error
List<Object>[] arrayOfList = new ArrayList<Object>[10];
见this在Angelika Langer的Java Generics常见问题的详细解释。
您可以删除泛型和使用原始类型,马修·富兰琛表示,或使用的不是数组集合类:
List<List<Object>> data = new ArrayList<List<Object>>();
-1。我的代码编译,因为我在这里实例化一个数组而不是一个列表。 – 2010-08-04 07:46:53
好吧,你是对的。我的错。编辑anwer。但这里要理解的重要一点是,你不能创建一个参数化类型的数组。 – Jesper 2010-08-04 07:50:40