2012-10-05 71 views
0

首先我是Java新手,经验很少。java声明一个通用数组

在I类具有以下属性

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

在类的构造函数中我试图将其初始化:

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

,但它不会编译。我一直在试图找出如何初始化这种类型的数组,我看到使用Array.newinstance,我不明白。

感谢您的帮助

解决方案:

弧=新名单[500];

+0

嗯,你的变量是一种严重命名...的弧列表应该叫弧,你有名单的数组,就是你真的打算?否则我会称之为arcLists(因为我没有办法将它与现实世界绑在一起,并称之为“arcDealership”或更多的用法) –

+0

'Lista'!='List ' – Magicode

+0

@JeffWatkins是我想要的是一个列表数组。我如何声明 – Alessandroempire

回答

3

使用此:

arcs = new List[500]; 

但不是 “利斯塔”。

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

+2

第一条语句不会编译。 – assylias

+0

@assylias你是对的...哎呀... –

+0

工作,谢谢 – Alessandroempire

0

你似乎在这里混的事情。

如果你需要的是一个一维数组,你可以使用列表或数组,但不能同时:

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); 
+0

我需要每个“盒子”,阵列的每个位置有一个列表。 – Alessandroempire

+0

@Alessandroempire查看我的编辑。 – assylias

+0

是的,这是我的建议。傻我。还在学习的时候。谢谢您的帮助 – Alessandroempire

0

理想情况下,为了避免警告您会使用列表清单

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

当然,在Java 7中,通过类型推断可能会看起来更清晰。

如果你一意孤行阵列,使用

arcs = (ArrayList<Arc>[]) new ArrayList[500]; 
0

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

这就是为什么代码List<Arcs>[] arcs有效且new ArrayList<Arcs>[500]不是。

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

T[] genericArray = new T[]; 

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

要avoit它,你可以创建类似这样的:

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

但thsi不是类型安全的,有一个类型保存解决方案,您应该我们Ë下面的代码:

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