我是JavaScript新手,經過幾次練習後,有一些疑問,我留下了一個令人困惑的問題,那就是有沒有辦法在Java中應用匿名函數的概念?它甚至有可能嗎?我很清楚我提出這個問題的批評意見,但無論如何我都在問。下面是一個JavaScript匿名函數的例子。JavaScript中的匿名函數
var myResult = (function() {
return arguments[0] + arguments[1];
}) (1,2);
alert(myResult);
我是JavaScript新手,經過幾次練習後,有一些疑問,我留下了一個令人困惑的問題,那就是有沒有辦法在Java中應用匿名函數的概念?它甚至有可能嗎?我很清楚我提出這個問題的批評意見,但無論如何我都在問。下面是一個JavaScript匿名函數的例子。JavaScript中的匿名函數
var myResult = (function() {
return arguments[0] + arguments[1];
}) (1,2);
alert(myResult);
使用@FunctionalInterface的Java 8
public class Test {
@FunctionalInterface
public interface Func {
public String concat(String a, String b);
}
public static void main(String[] args) {
Func func = (a, b) -> a + b;
System.out.print(func.concat("Hello ", "World!"));
}
}
匿名內部類這樣做。在Java中,函數不能獨立存在;它必須包裝在一個類中。所以,最接近匿名函數的是匿名內部類。
int myResult = (new Object() {
public int calc(int[] args){
return args[0] + args[1];
} }).calc(new int[]{ 1, 2});
System.out.println(myResult);
現在可以使用Java 8使用lambda表達式(帶有功能接口)輕鬆完成此操作。
https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html – Ryan
刪除'javascript'標記,因爲這個問題不是真的關於JavaScript。 – Qix
這是你錯了的地方。這裏的問題涉及2種語言。沒有理由刪除JavaScript標記。因爲包含的代碼本身就是一個JavaScript代碼 –