Está previsto que Java 8 contenga alguna forma de soporte lambda y de cierre, lo que sería un gran paso en la modernización del lenguaje Java. El problema es que las bibliotecas existentes basadas en interfaces, como el marco de recopilación, no podrán usar directamente estas nuevas características. No es posible agregar un método a una interfaz sin romper las implementaciones existentes, simplemente no volverían a compilar.
Tener lambdas, pero no ser capaz de usarlos fácilmente con colecciones estándar, sería una gran decepción para los desarrolladores de Java. Para integrar lambdas en las colecciones estándar, serían muy deseables métodos como forEach
, map
o filter
.
La solución a este problema es agregar otra característica, los métodos de extensión, que definen una implementación predeterminada de un método en una interfaz. Las subclases existentes utilizarían el método predeterminado, pero también es posible anular el método con una mejor implementación especializada y posible.
Puede encontrar más información sobre la propuesta del método de extensión en Java Enhancement Proposal 126.
Esta es una gran extensión de imo, que acercará Java al mundo de la herencia múltiple sin todos sus complicados detalles de implementación. – Perception
@Perception "... sin todos sus complicados detalles de implementación ..." ¿cómo exactamente? –
Cadena de constructores, Choque de nombres potenciales, Ambigüedad polimórfica, no se habla demasiado de la complejidad adicional que tendría que definirse en el compilador. Todas las razones por las cuales las mixinas son más populares que la herencia múltiple en muchos idiomas modernos, y en lo que esta característica me recuerda más. – Perception