title: Java generic method wildcard mismatch issue
body: <p>The basic thing I want to achieve is to map a list of references <code>List&lt;Ref&lt;Thing&gt;&gt;</code> to a list of the actual objects, but given by the superclass <code>List&lt;SuperThing&gt;</code>. In this example, <code>Thing extends SuperThing</code> and <code>Ref&lt;Thing&gt;</code> has a method <code>public Thing get()</code> to get the referenced object.</p>
  
  <p>The method that I assumed valid:</p>
  
  <pre><code>public &lt;T&gt; List&lt;T&gt; refsToObjects(List&lt;Ref&lt;? extends T&gt;&gt; list) {
      List&lt;T&gt; result = new ArrayList&lt;T&gt;();
      for(Ref&lt;? extends T&gt; ref : list) {
          result.add(ref.get());
      }
      return result;
  }
  </code></pre>
  
  <p>But when I try to use it</p>
  
  <pre><code>List&lt;Ref&lt;Thing&gt;&gt; refs;
  List&lt;SuperThing&gt; objectList = refsToObjects(refs);
  </code></pre>
  
  <p>I get this error message: <code>The method refsToObjects(List&lt;Ref&lt;? extends T&gt;&gt;) is not applicable for the arguments (List&lt;Ref&lt;Thing&gt;&gt;)</code></p>
  
  <p>I did not actively use the <code>? extends T</code> wildcard structure before, but what am I doing wrong?</p>