I know that an object is a class instance or an array.
Meaning that when creating an array, an instance of a real class is not created (the classes are created dynamically and are not defined in the source code).
According to the JLS https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.8
Every array has an associated Class object, shared with all other arrays with the same component type.
Although an array type is not a class, the Class object of every array acts as if:
The direct superclass of every array type is Object.
Every array type implements the interfaces Cloneable and java.io.Serializable.
Is the Class object associated with the dynamically created class?
Why does the Class object allow arrays to inherit java.lang.Object?
EDIT:
To clarify my question.
According to https://stackoverflow.com/a/2267807/11306652
"arrays are Objects in the sense that they inherit java.lang.Object, the classes are created dynamically as a special feature of the language. They are not defined in source code."
Furthermore,
https://stackoverflow.com/a/10674614/11306652
"[I" is the name of the class which we would call, in English, "array of int". The class is a "full citizenship" Java class, which responds to all the methods of Object. The only difference is that the new syntax is different and it doesn't support the newInstance() method of Class.
The classes "[I", "[C", et al, are "pre-defined" in the JVM -- there are no .class files corresponding to them. Java also will implicitly create, on the fly,"
Is my understanding correct that when arrays are created, the JVM dynamically creates an "array class" (with Object as a superclass) that defines the array object? Additionally there is a Class object associated with the dynamically created "array class".