JavaScript中的匿名函数

问题描述:

我是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代码 –

使用@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表达式(带有功能接口)轻松完成此操作。