JavaScript中的匿名函数
问题描述:
我是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代码 –