为什么我在.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()
}
}
答案 0 :(得分:5)
toArray
签名是
public <T> T[] toArray(T[] a)
并且由于T
将在运行时被删除为Object
,因此您只能使用Object
类型,而不是基本类型。尝试使用Double
代替double
return doubleComposantesConvertis.toArray(new Double[intLongueur]);
请注意,您还必须将方法的返回类型更改为Double[]
更新
如果您想返回double[]
并可以使用外部库,则可以使用Doubles.toArray
中的guava。
return Doubles.toArray(doubleComposantesConvertis);//will return double[]
答案 1 :(得分:1)
请改用:
doubleComposantesConvertis.toArray(new Double[intLongueur]);
请注意Double
是大写的。那是因为它是一个对象而不是一个原始对象。
答案 2 :(得分:0)
toArray()接收一个对象数组,你传递一个double数组,它是一个原语而不是对象。自动装箱不适用于阵列。
答案 3 :(得分:0)
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
(will perform better in most cases)。
答案 4 :(得分:0)
上述更改将解决您的问题,但实际上您最好使用0-argument toArray方法。