title: Collections.sort() declaration: why <? super T> rather than <T>
body: <p>Why does <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#sort-java.util.List-" rel="nofollow"><code>Collections.sort(List&lt;T&gt;)</code></a> have the signature :</p>
  
  <pre><code>public static &lt;T extends Comparable&lt;? super T&gt;&gt; void sort(List&lt;T&gt; list) 
  </code></pre>
  
  <p>and not :</p>
  
  <pre><code>public static &lt;T extends Comparable&lt;T&gt;&gt; void sort(List&lt;? extends T&gt; list)
  </code></pre>
  
  <ul>
  <li>I understand that they both would serve the same purpose; so why did the framework developers use the first option?</li>
  <li>Or are these declarations really different?</li>
  </ul>