With ‘var’ it is possible to ad-hoc combine traits into an instance that matches your exact requirements. This allows for pretty cool experimentation, but unfortunately has some serious downsides.
Why interface evolution with default methods does not work for whole interfaces – at least not smooth enough to be practical.
Patterns for interface evolution with default methods: gradually add, replace and remove interface methods without breaking client code.
Covering literally everything there is to know about Java 8’s default methods.
See how Java’s creation of instances of non-capturing lambda expressions can lead to unexpected and possibly bug-inducing behavior.
Use Java 8’s default methods to make the decorator pattern even more beautiful, which results in more concise and readable code.