假设我像这样将参数传递到函数中。
似乎外部参数的对象知道它是一个Object[]
数组。
但其中的Object[]
不是对象数组,而是普通对象
Object[] arguments = {
new Object[] {"command", "value"},
new Object[] {"List_test", Arrays.asList("1", "2", "3", "4")},
new Object[] {"single command"}
};
myFunc(arguments);
public void myFunc(Object[] args) {
if(args == null || args.length == 0) {
System.out.println("Error!");
return;
}
//How I do this below?
for(Object objArray : args) { //this one is good.
if(objArray == null) continue;
//objArray = (Object[]) objArray; //can't figure this out.
for(Object eachObject : objArray) { //this don't work.
System.out.println("eachObject reference = " + eachObject);
}
}
for(Object[] objArray : args) { //this don't work.
if(objArray == null) continue;
for(Object eachObject : objArray) { //this don't work.
System.out.println("eachObject reference = " + eachObject);
}
}
}
我在 Java 控制台中尝试了这个
> for(Object[] a : arguments) { System.out.println(a); }
出现此错误
Static Error: Bad types in assignment: from Object to Object[]
这看起来更糟糕。
Object[][] arguments = {
{ new Object[]{"command", "value"}},
{ new Object[]{"List_test", Arrays.asList("1", "2", "3", "4")}},
{ new Object[]{"single command"}}
};
最佳答案
当您将争论声明为 OBJect[]
时所以编译器知道 arguements
有一些Object
作为元素。但它不知道元素 objects
是否又是Object arrays
或不。所以你不可以做这些事。
但是如果你确定元素只有 Object arrays
您可以转换到Object[]
就像下面这样
for(Object objArray : args) {
if(objArray == null) continue;
Object[] ob = (Object[])objArray ;
for(Object eachObject : ob) {
System.out.println("eachObject reference = " + eachObject);
}
}
关于Java 将对象转换为 Object[] 数组并丰富 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140260/