2013-04-21 56 views
0

我正在学习使用JMonkey api构建曲面。该类Surface有一个方法如何初始化一个列表阵列<Float>

createNurbsSurface(controlPoints, nurbKnots, uSegments, vSegments, basisUFunctionDegree, basisVFunctionDegree). 

我试图做一个简单的例子来理解参数的含义。但是,我不能初始化第二个参数:

List<Float>[] nurbKnots 

我想:

List<Float>[] nurbKnots = {new ArrayList<Float>()}; 

但抱怨说,你不能创建的List<Float>.通用阵列

有人能告诉我如何初始化nurbKnots.

+0

'nurbKnots'的类型是什么? – NINCOMPOOP 2013-04-21 15:43:49

+0

的类型是列表 [] – Esther 2013-04-21 15:47:24

+0

检查代码,看看它是否工作! – NINCOMPOOP 2013-04-21 15:57:14

回答

0

它适用于非通用List

List[] listNonGeneric = new ArrayList[10]; 

但是,这是行不通的:

List<Float>[] listGeneric = new ArrayList<Float>[10]; 

你必须使用:

List<List<Float>> nurbKnots = new ArrayList<>(); 

,并传递参数作为

(List<Float>[])nurbKnots.toArray(); 
+0

我可以编译,但是我发现错误:java.lang.ClassCastException:[Ljava.lang.Object;不能转换为[Ljava.util.List; \t at br.unesp.lbbc.testes.TestaJMonkey。 (TestaJMonkey.java:51) \t at br.unesp.lbbc.testes.TestaJMonkey.main(TestaJMonkey.java:69) – Esther 2013-04-21 16:39:33

0

一个朋友的帮助。他告诉我:

In Java, it's not really possible to have arrays of generic types (safely). You have to allow unchecked assignment. Something like:

@SuppressWarnings("unchecked") 
List<Float>[] f = new List[2]; 
f[0] = new ArrayList<Float>(); 
f[0].add(0.1); 
f[1] = new ArrayList<Float>(); 
f[1].add(0.2); 

但是,它的工作!