title: Why does the java.lang.reflect.WildcardType class return arrays for the upper and lower bounds?
body: <p>Recently, I've read a lot about Java Generics since I'm going to start a project which heavily depends on those mechanics and the public reflection API allowing accessing them. But in my understanding, those are a bit contradicting:</p>
  
  <blockquote>
    <p>Note, a wildcard can have only one bound. In can neither have both an upper and a lower bound nor several upper or lower bounds.  Constructs such as " ? super Long extends Number "  or  " ? extends Comparable &amp; Cloneable " are illegal.</p>
  </blockquote>
  
  <p>(<a href="http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ102" rel="nofollow noreferrer">http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ102</a>; section Wildcard Bounds)</p>
  
  <p>Thus, a wildcard always has only one bound (if you ignore the upper bound "Object" that goes with every lower bound wildcard). But if you look at the corresponding reflection API class <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/WildcardType.html" rel="nofollow noreferrer"><code>WildcardType</code></a>, it seems like that this is not the whole truth:</p>
  
  <p>Why does the API only provide the functions <code>getLowerBounds()</code> and <code>getUpperBounds()</code> and why do they return an array? Is there any scenario, in which an array with a length of at least two will be returned?</p>