[英]Why do I get a syntax error
為什么在.ToArray
出現錯誤。 (語法)似乎是即時通訊輸入了正確的參數值。
感謝您的答復。
import java.util.LinkedList;
public class Vector {
private double doubleComposantes[];
private int intNombreDeComposante = 0;
public Vector(String strComposantes) {
strComposantes = strComposantes.trim();
intNombreDeComposante = getNumberOfComposantes(strComposantes);
}
private int getNumberOfComposantes(final String strComposantes) {
return strComposantes.split(",").length;
}
private double[] getAllComposantes(final String strComposantes) {
final String[] strComposantesSplitted = strComposantes.split(",");
LinkedList<Double> doubleComposantesConvertis = new LinkedList<Double>();
for (String strComposante : strComposantesSplitted) {
doubleComposantesConvertis.add(Double.valueOf(strComposante));
}
int intLongueur = doubleComposantesConvertis.size();
return doubleComposantesConvertis.toArray(new double[intLongueur]); // error at toArray()
}
}
LinkedList中的toArray
簽名為
public <T> T[] toArray(T[] a)
並且由於T
將在運行時被擦除為Object
,因此您只能在此處使用Object
類型,而不能使用基本類型。 嘗試使用Double
而不是double
return doubleComposantesConvertis.toArray(new Double[intLongueur]);
注意,您還必須將方法的返回類型更改為Double[]
更新:
如果要返回double[]
並可以使用外部庫,則可以從guava使用Doubles.toArray
。
return Doubles.toArray(doubleComposantesConvertis);//will return double[]
使用此代替:
doubleComposantesConvertis.toArray(new Double[intLongueur]);
請注意, Double
是大寫的。 那是因為它是一個對象而不是原始對象。
toArray()接收一個對象數組,您要傳遞一個double數組,它是原始對象而不是對象。 自動裝箱不適用於數組。
double[]
不是Double[]
。 您可以將返回值更改為Double[]
或手動構建double[]
。
我建議您避免在代碼中使用數組,而應使用List
。 這樣,您就不會有這個問題。 僅在嚴格必要時使用數組。
private List<Double> getAllComposantes(final String strComposantes) {
final String[] strComposantesSplitted = strComposantes.split(",");
final List<Double> doubleComposantesConvertis = new LinkedList<Double>();
for (String strComposante : strComposantesSplitted) {
doubleComposantesConvertis.add(Double.valueOf(strComposante));
}
return doubleComposantesConvertis;
}
另外,請確保出於某種原因需要LinkedList
而不是ArrayList
( 在大多數情況下,效果更好 )。
提到的更改將解決您的問題,但實際上,最好使用0參數的toArray方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.