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