2017-02-17 125 views
0

我是JavaScript新手,經過幾次練習後,有一些疑問,我留下了一個令人困惑的問題,那就是有沒有辦法在Java中應用匿名函數的概念?它甚至有可能嗎?我很清楚我提出這個問題的批評意見,但無論如何我都在問。下面是一個JavaScript匿名函數的例子。JavaScript中的匿名函數

var myResult = (function() { 
      return arguments[0] + arguments[1]; 
    }) (1,2); 
alert(myResult); 
+1

https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html – Ryan

+0

刪除'javascript'標記,因爲這個問題不是真的關於JavaScript。 – Qix

+0

這是你錯了的地方。這裏的問題涉及2種語言。沒有理由刪除JavaScript標記。因爲包含的代碼本身就是一個JavaScript代碼 –

回答

0

使用@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!")); 
    } 
} 
0

匿名內部類這樣做。在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表達式(帶有功能接口)輕鬆完成此操作。