I saw some code on an unrelated question but it got me curious as I never saw such construct with Java Generics. What would be the use of creating a generic class that can take
Without this, the parameter to the method foo
could not be bound to type E
.
If you have an implementation B
of this abstract class, you can now enforce that method foo
also requires its parameter to be of type B
.
class B extends A {
void foo (B x){}
}
Without that, foo
would have to take any kind of A
.
I agree that the syntax for this is less than elegant.