Планируется, что Java 8 будет содержать некоторую форму поддержки лямбды и замыкания, что станет большим шагом в модернизации языка Java.Проблема заключается в том, что существующие библиотеки, основанные на интерфейсах, например, структура коллекции, не смогут напрямую использовать эти новые функции.Невозможно добавить метод к интерфейсу без нарушения существующих реализаций, они просто перестали бы компилироваться.
Наличие лямбд, но не возможность легко использовать их со стандартными коллекциями, было бы огромным разочарованием дляJava-разработчики.Для интеграции лямбда-выражений в стандартные коллекции очень желательно использовать методы, такие как forEach
, map
или filter
.
Решение этой проблемы заключается в добавлении еще одной функции - методов расширения, которые определяютреализация метода по умолчанию в интерфейсе.Существующие подклассы будут использовать метод по умолчанию, но также возможно переопределить метод с помощью специализированной и, возможно, лучшей реализации.
Дополнительную информацию о предложении метода расширения можно найти по адресу Предложение по улучшению Java 126 .