Java 为什么Object实际上可以是Object[]?

Java 为什么Object实际上可以是Object[]?,java,arrays,object,reflection,Java,Arrays,Object,Reflection,当我编写一个使用反射的dumpObject方法时,我突然发现了这种行为 复制: public static class Tester { private String[] objects = new String[] { "a", "b", "c" }; } public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {

当我编写一个使用反射的dumpObject方法时,我突然发现了这种行为

复制:

public static class Tester {
        private String[] objects = new String[] { "a", "b", "c" };
    }

    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        System.out.println("testing Reflection");
        Tester tester = new Tester();
        Class<? extends Tester> class1 = tester.getClass();
        for (Field f : class1.getDeclaredFields()) {
            System.out.println(f);
            if (!f.isAccessible()) {
                f.setAccessible(true);
            }
            Object object = f.get(tester);
            System.out.println(object);
        }

    }
从:

数组是一个容器对象,它

发件人:

在Java编程语言中,数组是对象,是动态创建的,可以分配给Object类型的变量。类对象的所有方法都可以在数组上调用

简而言之,任何数组都是一个对象

是完全合法的java代码:

类对象是类层次结构的根。每个班级都有 对象作为超类。所有对象(包括数组)都实现 这个类的方法


你说的非法是什么意思?对象o=新字符串[]{a,b};因为数组是一个对象,所以没有问题;不是非法的,它是完全有效的代码。为什么要这样做是另一回事。Java中的任何数组都是对象。哦,对不起,我想我的Eclipse欺骗了我。它首先显示为错误,但重试后,它似乎有效…@RafaelT您可以查看Arrays.deepToString的签名每个示例,将对象[]作为参数就足够了。
Object o = new String[]{"a", "b"};
Object o = new String[]{"a", "b"};