什么是闭包,Java中有闭包吗? 您所在的位置:网站首页 钢闭自用是什么意思 什么是闭包,Java中有闭包吗?

什么是闭包,Java中有闭包吗?

2024-07-17 17:12| 来源: 网络整理| 查看: 265

什么是闭包,Java中有闭包吗?一、介绍

闭包是什么?我学习Java以来,虽然听过这个名词,但我今天才第一次了解它。

所谓闭包,就是在函数中有另一个函数,这个内部函数可以作为参数,外部通过传递的方式,将函数传递进来。从而内部函数可以访问到外部函数的局部变脸。

二、演示

我们使用groovy来演示闭包的使用,它是一门由java优化而来的语言,底层正是class,可以运行再JVM虚拟机上。

代码语言:javascript复制def sth(Closure closure) { def x = 5 def y = 5 println(closure.call(x, y)) } // 加 sth({x, y -> x + y}) // 减 sth({x, y -> x - y}) // 乘 sth({x, y -> x * y}) // 除 sth({x, y -> x / y})

运行结果如下

在Java中,我们可以使用匿名内部类来完成类似的功能,而在Java8后,可以直接使用lambda表达式,使得编码速度大大提升,语法结构也变得大同小异了起来

使用如下,是不是差不多

代码语言:javascript复制package com.banmoon.test.closure; import java.util.function.BiFunction; public class Main { public static void main(String[] args) { sth((x, y) -> x + y); sth((x, y) -> x - y); sth((x, y) -> x * y); sth((x, y) -> x / y); } public static void sth(BiFunction function) { int x = 5; int y = 5; System.out.println(function.apply(x, y)); } }

关于函数式编程,可以看我的这篇文章,Java的函数式接口以及Lambda表达式

三、最后

我是半月,你我一同共勉!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有