title: Why Object[].class.isAssignableFrom(String[].class) == true?
body: <p>Why is <code>Object[].class.isAssignableFrom(String[].class) == true</code>, while <code>String[].getSuperClass()</code> or <code>getGenericInterfaces()</code> could not get <code>Object[]</code>?</p>
  
  <p>I checked the source of JDK, but i don't think i can get the answer myself.
  For now, I know JDK uses tree to store the relationship between Classes, and depth to indicate its level, <code>Class::isAssignableFrom()</code> searched the chain, so definately arrays are in that tree. and also <code>String[]</code> is connected to <code>Object[]</code>.</p>
  
  <p>Can i say that <code>String[]</code> is a subclass of <code>Object[]</code>?
  Or is it just another weird thing of Java?</p>