java嵌套,Java中的嵌套函数

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、付费专栏及课程。

余额充值