title: Why "new ArrayList<E>" is allowed?
body: <p>I am studying "Java in a Nutshell" 5th Edition. In p169, it says "Remember,
  though, that type variables exist only at compile time, so you can’t use a type variable
  with the runtime operators instanceof and new.". If I understand it correctly (Am I??), new and instanceof should not be used with type variables. But after I did some tests, I became more confused.</p>
  
  <ol>
  <li>List&lt; ?> l = new ArrayList&lt; ?>(); // not compiled and I may know why</li>
  <li>List&lt; E> l = new ArrayList&lt; E>(); // compiled!! WHY??</li>
  </ol>
  
  <p>Could anyone tell me why (2) is allowed??</p>
  
  <p>Really thanks for any information.</p>