title: Why following types are reifiable& non-reifiable in java?
body: <blockquote>
  <p>In computing, reification has come to mean an explicit representation
  of a type—that is, run-time type information.</p>
  </blockquote>
  <p><a href="http://docs.oracle.com/javase/tutorial/java/generics/nonReifiableVarargsType.html" rel="noreferrer">oracle tutorials</a> says ,</p>
  <blockquote>
  <p>A reifiable type is a type whose type information is fully available
  at runtime. This includes primitives, non-generic types, raw types,
  and invocations of unbound wildcards.</p>
  <p>Non-reifiable types are types where information has been removed at
  compile-time by type erasure — invocations of generic types that are
  not defined as unbounded wildcards.</p>
  </blockquote>
  <p><strong>A type is reifiable if it is one of the following:</strong></p>
  <blockquote>
  <ol>
  <li>A primitive type (such as <code>int</code>) //understood</li>
  <li>A nonparameterized class or interface type (such as <code>Number</code>, <code>String</code>, or <code>Runnable</code>) // why</li>
  <li>A parameterized type in which all type arguments are unbounded wildcards (such as <code>List&lt;?&gt;</code>, <code>ArrayList&lt;?&gt;</code>, or <code>Map&lt;?, ?&gt;</code>) // why</li>
  <li>A raw type (such as <code>List</code>, <code>ArrayList</code>, or <code>Map</code>) // why</li>
  <li>An array whose component type is reifiable(such as <code>int[]</code>, <code>Number[]</code>, <code>List&lt;?&gt;[]</code>, <code>List[]</code>, or <code>int[][]</code>) // why</li>
  </ol>
  </blockquote>
  <p><strong>A type is not reifiable if it is one of the following:</strong></p>
  <blockquote>
  <ol start="6">
  <li>A type variable(such as <code>T</code>) // why</li>
  <li>A parameterized type with actual parameters (such as <code>List&lt;Number&gt;</code>, <code>ArrayList&lt;String&gt;</code>, or <code>Map&lt;String, Integer&gt;</code>) // why</li>
  <li>A parameterized type with a bound (such as <code>List&lt;? extends Number&gt;</code> or <code>Comparable&lt;? super String&gt;</code>) // why</li>
  </ol>
  </blockquote>
  <p><em>Why 2,3,4,5 is reifiable and 6,7,8 as non-reifiable?</em></p>