Почему «окончательный» не разрешен в методах интерфейса Java 8?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему «окончательный» не разрешен в методах интерфейса Java 8?

Сообщение Anonymous »

Одной из наиболее полезных функций Java 8 являются новые методы по умолчанию на интерфейсах. По сути, есть две причины (могут быть и другие), почему они были введены: < /p>
  • Предоставление фактических реализаций по умолчанию. Пример: iterator.remove ()
  • Разрешение для эволюции JDK API. Пример: iterable.foreach ()
с точки зрения дизайнера API, мне бы хотелось использовать другие модификаторы в методах интерфейса , например, final . Это было бы полезно при добавлении удобных методов, предотвращая «случайные» переопределения в реализации классов: < /p>

Код: Выделить всё

interface Sender {

// Convenience method to send an empty message
default final void send() {
send(null);
}

// Implementations should only implement this method
void send(String message);
}
Выше уже является обычной практикой, если отправитель был классом:

Код: Выделить всё

abstract class Sender {

// Convenience method to send an empty message
final void send() {
send(null);
}

// Implementations should only implement this method
abstract void send(String message);
}
Теперь, по умолчанию и final , очевидно, противоречат ключевым словам, но само ключевое слово по умолчанию не было бы строго, поэтому я предполагаю, что это противоречие преднамеренный, чтобы отразить тонкие различия между методами «класса с телом» (только методы) и «методы интерфейса с телом» (методы по умолчанию), то есть различия Что я еще не понял. Goetz: < /p>

Другая часть заключается в том, как далеко мы займемся поддержкой инструментов по строительству класса
в интерфейсах, таких как конечные методы, частные методы, Защищенные методы
, статические методы и т. Д. Ответ: мы еще не знаем < /p>
< /blockquote>
С тех пор в конце 2011 года, очевидно,, очевидно, Была добавлена ​​поддержка статических методов в интерфейсах. Очевидно, что это добавило большую ценность для самих библиотек JDK, например, с Comparator.comParing () .
Вопрос:
В чем причина Final (а также Static Final ) никогда не попал в интерфейсы Java 8?


Подробнее здесь: https://stackoverflow.com/questions/234 ... ce-methods
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»