2013-04-21 55 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); 

但是,它的工作!