title: What is static <T> List<T> methodName (List<? super T> input)
body: <p>I have the following code but i am confused with all the generics. </p>
  
  <pre><code>public static &lt;T&gt; List&lt;T&gt; backwards (List&lt;? super T&gt; input) {  
         List&lt;T&gt; output = new ArrayList&lt;T&gt;();  
         return output;  
  }
  </code></pre>
  
  <p>My understanding is that I have a public method named <code>backwards</code> which creates an arraylist implementing the List interface and returning the arraylist. My question is what actually I am saying to the compiler with the following part...... </p>
  
  <pre><code>static &lt;T&gt; List&lt;T&gt; backwards (List&lt;? super T&gt; input)
  </code></pre>