首页 > 解决方案 > Java数组是类实例吗?

问题描述

Java 语言规范

对象是类实例或数组。

它还

数组 [...] 可以分配给 Object 类型的变量

让我困惑的部分是:

类 Object 是所有其他类的超类

如果可以将数组分配给 Object 类型的变量,那么它必须意味着数组可以是 Objects(不仅表现为,而是相反)。那么就说明数组是一个类的实例,与第一个引用似乎不一致(如果是,那为什么会被列为不同的东西呢?)。

这一切怎么能融合在一起?

标签: javaarraysoopjls

解决方案


没有矛盾。数组也是一个对象,尽管它是一种特殊的对象。
这就像说:鸟也是一种动物,尽管是一种特殊的动物。

您可以通过编译和运行以下 Java 代码来说服自己。

    String[] arrayOfStrings = { "bla", "blah" };
    
    // examine the class hierarchy of the array 
    System.out.println("arrayOfStrings is of type "
            + arrayOfStrings.getClass().getSimpleName()
            + " which extends from "
            + arrayOfStrings.getClass().getSuperclass().getSimpleName());
    
    // assingning the array to a variable of type Object
    Object object = arrayOfStrings;

输出将是

arrayOfStrings is of type String[] which extends from Object

推荐阅读