title: Java Generics: Wildcard capture misunderstanding
body: <p>Reading the Java online tutorial I haven't understand anything about wildcard capture.
  For example:</p>
  <pre><code>    import java.util.List;
      public class WildcardError {
       void foo(List&lt;?&gt; i) {
        i.set(0, i.get(0));
       }
      }
  </code></pre>
  <p>Why the compiler can't retain the assignment safe?</p>
  <p>It knows that, by executing for instance, the method with an <code>Integer</code> List, it gets from <code>i.get</code> an <code>Integer</code> value. So it try to set an <code>Integer</code> value at index <code>0</code> to the same Integer list (<code>i</code>).</p>
  <p>So, what's wrong? Why write Wildcard helper?</p>