[jsr-335-eg] Default method survey results
Ulf.Zibis at CoSoCo.de
Sun Oct 21 08:49:08 PDT 2012
Am 21.10.2012 16:03, schrieb Brian Goetz:
> Other opinions? For all its faults, is "default" better than "extension"?
Why do we need a keyword at all ?
We now have method bodies in Interface, similar we had long time in abstract Class, but with some
restrictions (which are still not clear to me, is there a comparison document "Interface v.s
Abstract Class methods implementation"?).
Any method in any type of class/interface can be seen as a "default" which is used until it becomes
With the extension mechanism of Interface by help of "default methods" in fact we now have
introduced *Multiple inheritance* on implementation level in Java, but through the back door.
So I still would prefer to use abstract Class instead of Interface to extend an existing Interface
in a source compatible way and then to additionally introduce/allow an abstract Class to be
inherited by the 'implements' keyword, which would enable the sophisticated priority rules for
multiple inheritance. In first evolution step, we could restrict these multiple inheritable methods
to not access instance member variables, so they are in fact "static".
And do not forget, we ALREADY HAVE HAD extended Interfaces in the past, e.g. in java.sql package. So
it seems manageable to extend interfaces with the existing tools.
Binary incompatibility is perfectly treated by LinkageError,
Source incompatibility maybe additionally could be treated by introducing a @since annotation in
addition to the homonymous javadoc tag.
More information about the lambda-spec-observers