Hierachy depends if your array is a primitive data type array or a reference type array.
Primitive data types arrays are direct descendants of Object class, but not of Object[].
However reference type arrays are direct descendants of Object[].
So hierachy would be like this for primitive data types
Object
^
byte[] short[] char[] int[] long[] float[] double[] boolean[]
But for reference types:
Object
^
Object[]
^
Integer[] MyClass[] Float[]
String[]
Hope it helps!