> Or just by using covariant return types, which already exist in the
> language for this very purpose. Why is everyone so keen to tear up the
> language, in order to add solutions to problems that already have solutions?
Excellent question!
I think most developers are way too quick to conclude that a language change is needed to solve any particular problem. Most of us can't even begin to understand all the mountainous ramifications and repercussions, nor the incredible effort to safely rev the JLS, etc.
That said, I just want to address this idea of "adding solutions to problems that already have solutions." Because among the four language features (two existing and two proposed)
- covariant return types
- recursive bounds (Foo<A extends Foo<A>>)
- 'this' type
- void methods implicitly return 'this'