小编典典

Java中的嵌套函数

java

Java编程语言是否有任何扩展使创建嵌套函数成为可能?在很多情况下,我需要创建在另一个方法或for循环的上下文中仅使用一次的方法。到目前为止,尽管用Javascript可以很容易地完成,但我迄今仍无法完成。

例如,这无法在标准Java中完成:

for(int i = 1; i < 100; i++){
    times(2); //multiply i by 2 and print i
    times(i); //square i and then print the result
    public void times(int num){

        i *= num;
        System.out.println(i);
    }    
}

阅读 1615

收藏
2020-09-11

共1个答案

小编典典

Java 8引入了lambda。

java.util.function.BiConsumer<Integer, Integer> times = (i, num) -> {
    i *= num;
    System.out.println(i);
};
for (int i = 1; i < 100; i++) {
    times.accept(i, 2); //multiply i by 2 and print i
    times.accept(i, i); //square i and then print the result
}

() ->语法可在定义了一种方法的任何接口上使用。因此,您可以将其与一起使用,Runnable但不能与一起使用List

BiConsumerjava.util.function提供的许多功能接口之一。

值得注意的是,它在后台定义了一个匿名类并实例化了它。 times是对该实例的引用。

2020-09-11