title: Generic parameter of a generic class constructor
body: <p>Why can I compile this code without errors:</p>
  
  <pre><code>public class Base&lt;T&gt; {
      Base(List&lt;String&gt; list){}
  }
  
  class Child extends Base{
      Child(){
          super(new ArrayList&lt;Integer&gt;());
      }
  }
  </code></pre>
  
  <p>But at the same time I can't compile this one (pay attention to <code>Base&lt;T&gt;</code>):</p>
  
  <pre><code>public class Base {
      Base(List&lt;String&gt; list){}
  }
  
  class Child extends Base{
      Child(){
          super(new ArrayList&lt;Integer&gt;());
      }
  }
  </code></pre>
  
  <p>Obviously, there is "incompatible types" in the second example, but why is there no errors in the first one? It is unsafe and can lead to runtime exceptions, can't it?</p>