> Sounds like it would be useful if Whatever is an abstract class or
> interface. If you used ArrayList<Whatever> in this case and added an
> instanace of Whatever to the list and then tried to execute an abstract
> method you would get a runtime error. By using ArrayList<? extends
> Whatever> if you tried to do this you would get a compile time error.
> Cool.
Note that you can't actually create an instance of an abstract class or
interface; you can only create an instance of one of its subclasses. So
whenever you invoke an abstract method, it would always resolve to some
real, concrete method.
- Oliver