Java 将对象转换为 Object[] 数组并丰富 For 循环

标签 java arrays object foreach arguments

假设我像这样将参数传递到函数中。

似乎外部参数的对象知道它是一个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/

相关文章:

java - 从 CSV 读取并将数据存储到 ArrayList

java - RequestMapping 适用于私有(private)方法

java - 如果 Keys 在 Java HashMap 中包含相同的子字符串,则获取所有值

Ruby:计算数组中的唯一元素及其出现次数

javascript - 如何在 NodeRED 数组中收集从 angularJS 发送的字符串?

java - 适用于所有 Android 版本的通用 Android 对象样式?

javascript - 如何将键值对映射到对象中的每个索引

java - Gson - 放置和获取复合对象的 ArrayList

java - 乘法表

c++ - 如何在没有 'new' 的情况下将新对象实例添加到 std::list