Я пришел из Python и пытаюсь понять, как лямбда-выражения по-разному работают в Java. В Python вы можете делать такие вещи, как:
opdict = { "+":lambda a,b: a+b, "-": lambda a,b: a-b,
"*": lambda a,b: a*b, "/": lambda a,b: a/b }
sum = opdict["+"](5,4)
Как я могу сделать что-то подобное в Java? Я немного читал о лямбда-выражениях Java, и кажется, что сначала мне нужно объявить интерфейс, и я не понимаю, как и зачем вам это нужно делать.
Изменить: я попытался сделать это сам с помощью пользовательского интерфейса. Вот код, который я пробовал:
Map<String, MathOperation> opMap = new HashMap<String, MathOperation>(){
{ put("+",(a,b)->b+a);
put("-",(a,b)->b-a);
put("*",(a,b)->b*a);
put("/",(a,b)->b/a); }
};
...
...
interface MathOperation {
double operation(double a, double b);
}
Однако это дает ошибку:
Целевой тип этого выражения должен быть функциональным интерфейсом.
Где именно я объявляю интерфейс?