0

首先我是Java新手,经验很少。

在一个类中,我具有以下属性

private List<Arc> arcs[]; // an array of a List of type Arc

在类的构造函数中,我试图初始化它:

 @SuppressWarnings("unchecked")
 arcs = new List[500];

但它不会编译。我一直在试图弄清楚如何初始化这种类型的数组,我看到了我不理解的 Array.newinstance 的使用。

感谢您的帮助

解决方案:

弧=新列表[500];

4

4 回答 4

3

用这个 :

arcs = new List[500];

但不是“Lista”。

恐怕你的问题只是一个错字......

于 2012-10-05T14:24:08.520 回答
0

你似乎在这里混合了一些东西。

如果您需要的是一维数组,则可以使用 List 或数组,但不能同时使用:

    List<Arc> list = new ArrayList<Arc>();
    list.add(new Arc());

    Arc[] array = new array[1];
    array[0] = new Arc();

除非您确实需要数组列表(二维结构),但似乎并非如此。

编辑

根据您的评论,您需要一个列表数组,如下所示:

List<Arc>[] listOfArrays = new List[500]; //you can't easily mix arrays and generics
List<Arc> list = new ArrayList<Arc>();
list.add(new Arc());
listOfArrays[0] = list;

ps:您还可以使用列表列表:

List<List<Arc>> listOfLists = new ArrayList<List<Arc>>();
List<Arc> list = new ArrayList<Arc>();
list.add(new Arc());
listOfLists.add(list);
于 2012-10-05T14:25:08.360 回答
0

理想情况下,为避免警告,您应使用列表列表

List< List<Arc>> arcLists = new ArrayList< List< Arc >>();

当然,在 Java 7 中,使用类型推断可能看起来更简洁一些。

如果您对数组一心一意,请使用

arcs = (ArrayList<Arc>[]) new ArrayList[500];
于 2012-10-05T14:33:05.527 回答
0

您不能做您想做的事,因为数组在运行时包含有关其组件类型的信息。泛型没有。所以要创建一个数组,你必须知道类型,这意味着在这种情况下你不能使用泛型。

这就是代码List<Arcs>[] arcs有效而无效的原因new ArrayList<Arcs>[500]

当你尝试做这样的事情时你会得到同样的错误(T 是通用的)

T[] genericArray = new T[];

错误编译器失败是:Cannot create a generic array

要避免它,您可以创建如下内容:

List<Arcs>[] arcs = new ArrayList[500];

但是 thsi 不是类型安全的,要使用类型保存解决方案,您应该使用以下代码:

List<List<Arcs>> lista = new ArrayList<List<Arcs>>();

于 2012-10-05T14:45:44.890 回答