原始类型无法以这种方式转换。
在您的情况下,存在由3.14引起的双精度值数组。
以下内容可行:
List<Object> objectList = new ArrayList<Object>();
objectList.addAll(Arrays.asList(0,1,2,3.14,4));
即使这样也可以工作:
List<Object> objectList = new ArrayList<Object>();
objectList.addAll(Arrays.asList(0,"sfsd",2,3.14,new Regexp("Test")));
for(Object object:objectList)
{
System.out.println(object);
}
更新
好的,正如之前所说,没有直接将基本类型数组转换为Object[]的方法。
如果你想要一个将任何数组转换为字符串的方法,我可以建议以下方式。
public class CastArray {
public static void main(String[] args) {
CastArray test = new CastArray();
test.TestObj(new int[]{1, 2, 4});
test.TestObj(new char[]{'c', 'a', 'a'});
test.TestObj(new String[]{"fdsa", "fdafds"});
}
public void TestObj(Object obj) {
if (!(obj instanceof Object[])) {
if (obj instanceof int[]) {
for (int i : (int[]) obj) {
System.out.print(i + " ");
}
System.out.println("");
}
if (obj instanceof char[]) {
for (char c : (char[]) obj) {
System.out.print(c + " ");
}
System.out.println("");
}
} else {
System.out.println(Arrays.asList((Object[]) obj));
}
}
}
是的,为每种原始类型编写循环很麻烦,但我认为没有其他方法。