Автор исходного вопроса, М. Сах, сказал, что вместо методов по умолчанию просто поместите реализации по умолчанию в абстрактный класс.
Ответчик Эрана говорит, что это нарушит существующий код.
Например, предположим, что у вас есть собственная реализация List
, написанная в Java 7, которая не наследуется от AbstractList
. Что происходит при переносе кода в Java 8? Внезапно в интерфейсе List
появляется куча новых методов, которых нет в вашей собственной реализации List
(реализация этих методов по умолчанию - в AbstractList
, которую ваш класс не наследует)! Ваш код больше не будет компилироваться.
Это означает, что при переходе на Java 8 вам, возможно, придется писать новые методы для существующих классов.
При использовании методов по умолчанию, по умолчанию реализация находится в самом интерфейсе, поэтому вам не нужно писать новые методы.