Мне интересно, какие преимущества привносят методы по умолчанию в Java 8 против методов расширения или неявного преобразования, например, в Scala? Похоже, что я не мог модифицировать существующий код с помощью методов по умолчанию из внешней библиотеки, и это странно.почему java 8 использует методы по умолчанию вместо методов расширения
0
A
ответ
4
Потому что это цель - полная противоположность используемого вами варианта использования. Способы по умолчанию позволяют библиотечному коду изменять свой API, не требуя изменения кода вызова. & перекомпилирован. Это всего лишь инструмент для поддержки совместимости с API & ABI, это не инструмент для переопределения деталей реализации стороннего кода.
Смежные вопросы
- 1. Java 8 Необходимость Защитник методов (по умолчанию)
- 2. Почему Java использует модифицированный UTF-8 вместо UTF-8?
- 3. Java 8 - Методы по умолчанию для equals и hashcode
- 4. Java 8 добавить метод расширения/по умолчанию в класс
- 5. Методы интерфейса Java по умолчанию
- 6. Инъекция зависимостей для java 8 методов интерфейса по умолчанию
- 7. Использование методов java 8 по умолчанию для достижения множественного наследования
- 8. UML: Защитники Java или методы по умолчанию
- 9. Почему django использует ascii вместо utf-8?
- 10. Почему Android-студия по умолчанию использует Gradle 2.14.1 вместо последнего?
- 11. Почему подпроцесс использует список по умолчанию вместо строки с пробелами?
- 12. Должен ли я использовать методы по умолчанию Java 8 для ручных методов хранения данных Spring Data?
- 13. Каков новый способ получения всех методов класса, включая унаследованные методы по умолчанию для Java 8?
- 14. C# - использование методов расширения для обеспечения реализации интерфейса по умолчанию
- 15. Почему добавление методов по умолчанию для интерфейсов в Java 8 - хороший выбор дизайна и какие альтернативы
- 16. Когда будут поддерживаться методы по умолчанию (Java 8) в Android?
- 17. Java 8 - по умолчанию методы - проблемы для унаследованного кода
- 18. Argparse использует значение по умолчанию вместо аргумента
- 19. Zend_Auth использует Zend_Session вместо хранилища по умолчанию?
- 20. Почему нам нужны методы по умолчанию в Java?
- 21. Почему не конструкторы по умолчанию в Java 8?
- 22. Метод по умолчанию в java 8
- 23. Почему .NET использует округление банкира по умолчанию?
- 24. Почему по умолчанию clone() в Cloneable в Java 8
- 25. Каково практическое использование методов расширения в Java?
- 26. Почему python использует «магические методы»?
- 27. Почему некоторые методы HtmlHelper реализованы как методы расширения
- 28. Использование методов по умолчанию в выражении лямбда
- 29. OSGi: методы доступа по умолчанию по умолчанию или статического интерфейса Java 8 производят NoSuchMethodError
- 30. C методы # расширения для существующих методов
Спасибо. Но я не мог понять причину этого. Почему они ограничились таким небольшим усовершенствованием? – aim
Ну, на самом деле это не так * объяснено * где-нибудь, о чем я знаю (по крайней мере, исходные спецификации JSR не распространяются на какое-либо обоснование этого поведения). Однако я полагаю, что причина в том, что это гораздо менее инвазивное изменение по сравнению с Java 7, и поэтому проще реализовать и получить одобрение. – user268396