首先,我是Java的新手,很少有经验。
在课程中,我有以下属性
private List<Arc> arcs[]; // an array of a List of type Arc
在我尝试初始化它的类的构造函数中:
@SuppressWarnings("unchecked")
arcs = new List[500];
但它不会编译。我一直在试图弄清楚如何初始化这种类型的数组,我看到了使用我不理解的Array.newinstance。
感谢您的帮助
解决方案:
arcs = new List [500];
答案 0 :(得分:3)
使用此:
arcs = new List[500];
但不是“Lista”。
我担心你的问题只是一个错字......
答案 1 :(得分:0)
你好像在这里混合。
如果你需要的是一维数组,你可以使用List或数组,但不能同时使用两者:
List<Arc> list = new ArrayList<Arc>();
list.add(new Arc());
Arc[] array = new array[1];
array[0] = new Arc();
除非你确实需要一个数组列表(2D结构),但似乎并非如此。
修改强>
根据您的评论,您需要一个列表数组,如下所示:
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);
答案 2 :(得分:0)
理想情况下,为避免出现警告,您需要使用列表清单
List< List<Arc>> arcLists = new ArrayList< List< Arc >>();
当然,在Java 7中,类型推断可能看起来更清晰。
如果你对数组感到害怕,请使用
arcs = (ArrayList<Arc>[]) new ArrayList[500];
答案 3 :(得分: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>>();