title: Type erasure, overriding and generics
body: <p>Can someone explain to me why</p>
  
  <pre><code>@Override
  public void fooMethod(Class&lt;?&gt; c)
  </code></pre>
  
  <p>doesn't override</p>
  
  <pre><code>public void fooMethod(Class c)
  </code></pre>
  
  <p>and gives me the following errors instead:</p>
  
  <pre> - Name clash: The method fooMethod(Class&lt;?&gt;) 
  of type SubClass has the same erasure as fooMethod(Class) of 
  type SuperClass but  does not override it
  
   - The method fooMethod(Class&lt;?&gt;) of type 
  SubClass must override a superclass method
  </pre>
  
  <p>?</p>
  
  <p><em>Edit:</em> "<code>java -version</code>" says 
  Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284). As for the code snippet, it's already above, pretty much; the above extends the one below.</p>