Personalmente me confundí un poco con esta clase porque no había visto antes una interfaz funcional con más de un método. Por eso me puse a investigar un poco más en los docs y se los comparto:
Escencialmente una interfaz con la anotación @FunctionalInterface
solo puede tener 1 método abstracto. Como los métodos default tienen una implementación no son abstractos y por lo tanto no rompen el contrato de @FunctionalInterface
.
También me surgió una duda respecto al método asociado a la lambda: ¿podríamos hacer StringOperation op = text -> {}
(asociar la lambda a operate(String)
en lugar de a getAmout()
)?. La respuesta es inmediata y obvia: No. Si pudiesemos hacer lo anterior getAmount()
no tendría una definición y eso es imposible, generaría un error de compilación.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?