title: ArrayList(Collection<? extends E> c)
body: <p>I know that in order to create an object of ArrayList type I need to:</p>
  
  <pre><code>ArrayList&lt;MyType&gt; l = new ArrayList&lt;MyType&gt;();
  </code></pre>
  
  <p>I know it because I've seen this in books.</p>
  
  <p>But looking at Java SE API for the ArrayList constructor I see:
  <code>ArrayList(Collection&lt;? extends E&gt; c)</code></p>
  
  <p>I don't understand, how would I ever get an idea to specify the type of objects my new ArrayList object would hold? How would I know from this definition that I have to specify <code>&lt;MyType&gt;</code> during instantiation and variable declaration?</p>