> Duly answered. One question though: Why have them at all? Java has
> abstract classes which can be used as types. Interfaces with default
> methods appears to implement the same idea. Introducing a second way of
> achieving a goal sounds very Perlesque.
tl;dr - if you add a method like 'filter' to an interface like
Collection then you're making a binary incompatible change to the API.
So you provide a default method that is inherited if no alternative
is provided in order to be able to more easily evolve interface based
> Is there a document explaining all this you can point me at?