Defender Extension Methods -- Resolution and Invoccation
brian.goetz at oracle.com
Thu Aug 5 06:36:06 PDT 2010
> I know I've voiced this before but I'm not a fan of defender methods. I
> just don't see how this is not already multiple inheritance.
Java has always had multiple inheritance of types, through interfaces. (And
since 1.1 Java has had multiple inheritance of behavior in the context of
inner classes; members of both the lexical scope and the inner class hierarchy
are in scope inside an inner class.)
Multiple inheritance per se is not evil; we've been enjoying it for years.
The real pain of multiple inheritance is when it comes to *state* (as with so
many things). Defender methods do not introduce state in interfaces.
Defender methods are clearly a point on the spectrum somewhere between the
current state of Java and C++.
Note also that it is not as far along this spectrum as mixins or traits. Some
have advocated we should do mixins or traits or... Because defender methods
is a more measured solution that meets the current goal (be able to add
lambdaphilic methods to interfaces like Collection.filter), this solution is
preferred to those other solutions.
More information about the lambda-dev