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); } }
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。
() ->
Runnable
List
BiConsumer是java.util.function提供的许多功能接口之一。
BiConsumer
值得注意的是,它在后台定义了一个匿名类并实例化了它。 times是对该实例的引用。
times