Estoy leyendo Effective Java y se preguntaba acerca de las diferencias entre lambda
y anonymous class
. Sé que lambda sólo se puede utilizar con las interfaces con un método único Interfaces es decir, funcionales y en lambda no puede obtener referencia a sí mismo por lo que la palabra clave this
se refiere a la clase en la que se especifica lambda cuando en la clase de palabras clave anónima this
relaciona con el cuerpo de una clase anónima. Pero no sé lo que realmente es lambda. Supongo que esto es sólo una expresión que crea una instancia de la clase anónima que implementa la interfaz funcional así que esto es sólo el azúcar sintáctica con algunas limitaciones cuando se compara con clase anónima normal, pero gracias a ella podemos deshacernos de repetitivo y hacer nuestro código más legibilidad . Por otra parte aquí podemos leer acerca de las diferencias de rendimiento de lo que podría sugerir que lambda, de hecho, no es una instancia de la clase anónima que implementa la función de interfaz.
No hay, lambdas! = Clases internas anónimas
Lambdas en Java reemplazar muchos de los usos comunes de las clases internas anónimas. El resultado es mucho más compacto y fácil de leer, y el código obvia.
No, la implementación de lambdas es no basado en clases internas anónimas.
Para una mayor discusión, véase esta pregunta en un sitio hermano de desbordamiento de pila.