我知道对象是类实例或数组。
这意味着在创建数组时,不会创建真实类的实例(这些类是动态创建的,并且未在源代码中定义)。
根据JLS https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.8
每个数组都有一个关联的Class对象,与其他所有具有相同组件类型的数组共享。
尽管数组类型不是类,但每个数组的Class对象 就像:
每种数组类型的直接超类都是Object。
每种数组类型都实现接口Cloneable和 java.io.Serializable。
Class对象是否与动态创建的类相关联?
为什么Class对象允许数组继承java.lang.Object?
编辑:
澄清我的问题。
根据https://stackoverflow.com/a/2267807/11306652
”数组是对象,因为它们继承了java.lang.Object, 这些类是动态创建的,作为 语言。它们未在源代码中定义。”
此外,
https://stackoverflow.com/a/10674614/11306652
“ [I”是用英语称呼的“ int”。该类是“完全公民身份” Java类,它对 Object的所有方法。唯一的区别是新语法 不同,它不支持Class的newInstance()方法。
类“ [I”,“ [C”等)在JVM中是“预定义的”-在那里 没有与之相对应的.class文件。 Java也将隐式地 即时创建”
我的理解是否正确,当创建数组时,JVM动态创建一个定义数组对象的“数组类”(以Object为超类)?此外,还有一个与动态创建的“数组类”关联的Class对象。