title: What is the difference between 'super' and 'extends' in Java Generics
body: <p>I am trying to learn Java generics. I am not clear when you will use <code>&lt;T extends Foo&gt;</code> and when you will use <code>&lt;T super Foo&gt;</code>. What do each one of these things mean about T? Lets say I have <code>&lt;T extends Comparable&gt;</code> and <code>&lt;T super Comparable&gt;</code>, what do each of these mean?</p>
  <p>I've read several tutorials at sun.com but I'm still lost. Can somebody illustrate with examples?</p>