Необходимость реализации метода по умолчанию в Java 8 - PullRequest
0 голосов
/ 02 февраля 2020

Проходя ответы на вопросы «Необходимость методов защиты», я наткнулся на этот ответ

Не могли бы вы уточнить, что означает следующее в принятом ответе?

вы сможете переключиться на Java 8 без необходимости реализации новых методов в вашем классе.

1 Ответ

6 голосов
/ 02 февраля 2020

Автор исходного вопроса, М. Сах, сказал, что вместо методов по умолчанию просто поместите реализации по умолчанию в абстрактный класс.

Ответчик Эрана говорит, что это нарушит существующий код.

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

Это означает, что при переходе на Java 8 вам, возможно, придется писать новые методы для существующих классов.

При использовании методов по умолчанию, по умолчанию реализация находится в самом интерфейсе, поэтому вам не нужно писать новые методы.

...