Очевидно, что наиболее важной причиной введения методов по умолчанию в Java8 является обратная совместимость .Как вы упомянули, перед этой возможностью, чтобы добавить новый метод в интерфейсный класс, мы должны создать унаследованный класс, и это абсолютно не эффективный способ.Потому что это заставило разработчиков изменять все типы объектов, если они хотели использовать недавно разработанные функции.
Чтобы понять важность метода по умолчанию, подумайте, сколько изменений потребовалось для добавления метода forEach
в интерфейс Iterable
.Как вы знаете, Iterable
является родителем Collection
, который является родителем всех существующих типов списков в Java.Какое огромное изменение потребовалось для добавления простого метода в Iterable
без введения метода default
!
Кроме того, сейчас я использую стандартные методы для сокращения написания кода, и я не знаю,почему это не упоминается ни на каких сайтах.Поведение метода может быть одинаковым в некоторых унаследованных классах, и я могу легко реализовать поведение в родительском интерфейсе, используя метод по умолчанию, и четко изменить поведение везде, где я хочу.Тем не менее, это не имеет большого значения, но это действительно заставляет меня чувствовать себя комфортно с развитием.