title: How is ? different then saying object?
body: <p>I have written the below method with and without a wildcard.  In the first instance, how is different then subsituting in object for the wildcard? </p>
  
  <pre><code>public void sumOfNumbers(List&lt;? extends Number&gt;numbers){
      int sum=0;
      for(Number n:numbers){
          sum+=n.intValue();
      }
      System.out.println(sum);
  }
  </code></pre>
  
  <p>In this method without the wildcard shown below why can it put  in the parameter?</p>
  
  <pre><code>public&lt;T extends Number&gt; void sumOfNumbers(List&lt;T&gt;numbers){
      int sum=0;
      for(Number n:numbers){
          sum+=n.intValue();
      }
      System.out.println(sum);
  }
  </code></pre>
  
  <p>Lastly, if ? extends Number then why cant I have an Integer in the for each loop as shown below?</p>
  
  <pre><code> public void sumOfNumbers(List&lt;? extends Number&gt;numbers){
      int sum=0;
      for(Integer n:numbers){//Why cant I do this??
          sum+=n.intValue();
      }
      System.out.println(sum);
  }
  </code></pre>
  
  <p>Also, why can you put number in the for each loop, in this case isnt Integer the upper bounds? Isnt that below number?</p>
  
  <pre><code>public void sumOfNumbers(List&lt;? extends Integer&gt;numbers){
      int sum=0;
      for(Integer n:numbers){//Why cant I do this??
          sum+=n.intValue();
      }
      System.out.println(sum);
  }
  </code></pre>