Saya berasal dari Python, dan mencoba memahami bagaimana ekspresi lambda bekerja secara berbeda di Java. Dengan Python, Anda dapat melakukan hal-hal seperti:
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)
Bagaimana saya bisa mencapai hal serupa di Jawa? Saya telah membaca sedikit tentang ekspresi lambda Java, dan sepertinya saya harus mendeklarasikan antarmuka terlebih dahulu, dan saya tidak jelas tentang bagaimana dan mengapa Anda perlu melakukan ini.
Sunting: Saya mencoba melakukan ini sendiri dengan antarmuka khusus. Inilah kode yang saya coba:
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);
}
Namun, ini memberikan kesalahan:
Tipe target ekspresi ini harus berupa antarmuka fungsional.
Di mana tepatnya saya mendeklarasikan antarmuka?