java - Java数组是类实例吗?
问题描述
Java 语言规范说:
对象是类实例或数组。
它还说:
数组 [...] 可以分配给 Object 类型的变量
但让我困惑的部分是:
类 Object 是所有其他类的超类
如果可以将数组分配给 Object 类型的变量,那么它必须意味着数组可以是 Objects(不仅表现为,而是相反)。那么就说明数组是一个类的实例,与第一个引用似乎不一致(如果是,那为什么会被列为不同的东西呢?)。
这一切怎么能融合在一起?
解决方案
没有矛盾。数组也是一个对象,尽管它是一种特殊的对象。
这就像说:鸟也是一种动物,尽管是一种特殊的动物。
您可以通过编译和运行以下 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
推荐阅读
- android - 在本地通过nodejs服务器发布android GPS位置?
- mapbox - Mpabox GL case 表达式输出,执行数学表达式
- regex - 正则表达式:如何强制可选组匹配
- finite-automata - 在自动机中使用字母表
- python - 如何从只有一个值的列表中拆分多个数字
- python - 用向量化方式从函数创建带有 numpy 的矩阵?
- python-3.x - Python Aliexpress API promoLinkGenerate
- arrays - 在 Google 表格中乘以嵌套的 IF
- java - 如何在 Tycho 构建中设置 Java 编译器兼容性?
- apache-spark - PYSPARK:如何根据条件更新列中的值