The type parameter is retained because it must be known for subclassification. Definitions
public class Foo<E extends CharSequence>
and
public class Foo<CharSequence>
NOT equal, since the latter did not allow the subclass to be declared, say:
public class MyStringFoo extends Foo<String> { }
whereas the previous one does.
source share