title: What do constructor type arguments mean when placed *before* the type?
body: <p>I've recently come across this unusual (to me) Java syntax...here's an example of it:</p>
  
  <pre><code>List list = new &lt;String, Long&gt;ArrayList();
  </code></pre>
  
  <p>Notice the positioning of the <code>&lt;String, Long&gt;</code> type arguments...it's not after the type as normal but before. I don't mind admitting I've never seen this syntax before. Also note there are 2 type arguments when <code>ArrayList</code> only has 1.</p>
  
  <p>Does the positioning of the type arguments have the same meaning as putting them after the type? If not, what does the different positioning mean?</p>
  
  <p>Why is it legal to have 2 type arguments when <code>ArrayList</code> only has 1?</p>
  
  <p>I've searched the usual places, eg. Angelika Langer and on here but can't find any mention of this syntax anywhere apart from the grammar rules in the Java grammar file on the ANTLR project.</p>