Examining default and static interface methods
Before Java 8, only abstract
methods were allowed in interfaces. This meant that if you introduced a new abstract
method to an existing interface, the classes that had already implemented that interface would break. This was inconvenient for not only Java developers but also the designers of Java.
This all changed in Java 8, with the introduction of both default
and static
methods. One of the primary drivers for introducing default
methods was to be able to introduce code into the interface and not break the existing client base. This maintained backward compatibility. In addition, this new code is automatically available to clients implementing that interface.
A primary driver for the introduction of static
methods was to keep utility code local to the interface rather than having it in a separate class, which was the case before their introduction.
Let’s discuss them in turn, starting with default
methods.