我有以下代码片段:
public void doSomething() {
float array[] = new float[2];
array[0] = (float) 0.0;
array[1] = (float) 1.2;
someMethod(array);
}
public void someMethod(Object value) {
//need to convert value to List<Float>
}
正如您在上面所看到的,我想将值变量(即数组(但作为Object传递))转换为List。 我尝试了以下建议:Create ArrayList from array
new ArrayList<Float> (Arrays.asList(value));
但是,它不能编译。
任何提示?
答案 0 :(得分:7)
public void someMethod(Object value) {
float[] array = (float[]) value;
List<Float> result = new ArrayList<Float>(array.length);
for (float f : array) {
result.add(Float.valueOf(f));
}
// ...
}
我不知道为什么你没有将值参数定义为float[]
而不是Object
。
答案 1 :(得分:4)
[根据JB Nizet的更正更新。]
如果对数组使用Float而不是float,那么如果编译器知道value
是一个数组,那么它将工作 - 它不会。添加演员:
new ArrayList<Float> (Arrays.asList((Float[])value));
或者只是将value
的参数类型更改为Float [],并忽略演员表。
答案 2 :(得分:2)
如果您想将float[]
视为List<Float>
,那么Guava的Floats.asList
方法将完成工作。
答案 3 :(得分:1)
将float
更改为Float
,因为Arrays.asList(T...a)
无法返回List<float>
,因为Java基元类型无法作为参数传递给泛型类型。
public void doSomething() {
Float array[] = new Float[2];
array[0] = 0.0f;
array[1] = 1.2f;
someMethod(array);
}
public void someMethod(Object value) {
List<Float> list = new ArrayList<Float> (Arrays.asList((Float[])value));
System.out.println(list);
}
打印
[0.0, 1.2]
答案 4 :(得分:0)
您有float
个数组,但是您正在尝试获取Float
的列表。这就是你需要的:
public void doSomething() {
Float[] array = new Float[2];
array[0] = new Float(0.0);
array[1] = new Float(1.2);
someMethod(array);
}
public void someMethod(Object value) {
List<Float> list = Arrays.asList((Float[])value);
System.out.println(list);
}