#TIL about Java "default methods." What a hack. I'm without words. Interfaces can have method implementations now?
What they could have done to achieve the same effect is copy Extension Methods from C#. Those are really elegant and not hacky at all: https://msdn.microsoft.com/en-us/library/bb383977.aspx
There are many reasons extension methods are nice. But the main things that appeal to me are:
1. Anybody can add them later without modifying the base interface (so you can create a new package that adds extension methods to the system-provided List or String or anything else).
2. The new extension methods only appear if you import the package that implements them into the caller's namespace. This turns out to be exactly what you want, because the caller is the one trying to use the new semantics, or who will be surprised if new methods suddenly appear in an old class, respectively.
Those who do not understand X are doomed to reinvent it, poorly.