java嵌套,Java中的嵌套函数

Java编程语言标准版不支持内嵌函数,但在Java 8引入了lambda表达式作为替代方案。通过lambda,可以创建匿名函数并在需要的地方使用,如在for循环内部。示例展示了如何使用BiConsumer接口来实现类似局部函数的功能,避免了创建单独的方法。
摘要由CSDN通过智能技术生成

Are there any extensions for the Java programming language that make it possible to create nested functions? There are many situations where I need to create methods that are only used once in the context of another method or for-loop. I've been unable to accomplish this in Java so far, even though it can be done easily in Javascript.

For example, this can't be done in standard 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 introduces lambdas.

java.util.function.BiConsumer 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

}

The () -> syntax works on any interface that defines exactly one method. So you can use it with Runnable but it doesn't work with List.

BiConsumer is one of many functional interfaces provided by java.util.function.

It's worth noting that under the hood, this defines an anonymous class and instantiates it. times is a reference to the instance.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值