Yo sólo estaba tratando de escribir una interfaz funcional para comprender los diferentes casos de uso.
Mirando el código de abajo que he escrito, entiendo que puedo tener diferentes implementaciones que utilizan expresiones lambda. Aparte de esto ¿alguien puede mostrar las implementaciones complejas?
¿Es posible utilizar otro método por defecto es decir, addLikeOtherWay
en la expresión lambda? si es así cómo en mi ejemplo?
¿Por qué tendría interfaz con sólo un método abstracto? ¿Cuál sería el caso de uso de tener sólo método abstracto sola en mi interfaz?
public class Calculator {
public static void main(String[] args) {
ICalculator i = (int a, int b) -> a + b;
System.out.println(i.add(5, 2));
i = (int a, int b) -> a + b + a;
System.out.println(i.add(5, 2));
}
}
@FunctionalInterface
interface ICalculator {
public int add(int a, int b);
default int addLikeThis(int a, int b) {
return a + b;
}
default int addLikeOtherWay(int a, int b) {
return a + b + a + b;
}
}
¿Por qué tendría interfaz con sólo un método abstracto? ¿Cuál sería el caso de uso de tener sólo método abstracto sola en mi interfaz?
Para facilitar el uso de las expresiones lambda, que son funciones sin nombre. Las expresiones lambda hacer que el código expresivo y reducir el desorden. También hace que el código sea más legible. Esto se basa mi experiencia trabajando con las expresiones lambda.