我们在java中接触了不少的函数,有一种函数比较特殊,看起来和一般的英文函数名称不一样,在用法上是作用于变量的,这就是闭包的理解。在对于外部的访问上比较友好,能够进行互通。下面我们就闭包的概念、作用、应用场景、实例进行分别的讲解,一起来看具体内容。
1.概念
闭包(closure)是一种特殊的函数,它暗地里绑定了函数内部使用的所有变量。(另一种比较好的解释:闭包是绑定了外部环境变量的函数。)
2.作用
(1)让外部访问函数内部变量成为可能;
(2)局部变量会常驻在内存中;
(3)可以避免使用全局变量,防止全局变量污染;
(4)会造成内存泄漏(有一块内存空间被长期占用,而不被释放)
3.应用场景
绑定常量
延迟执行
4.实例
int factor = 3; numbers.stream() .filter(e -> e % 2 == 0) .map(e -> e * factor) .collect(toList());
map 方法现在接受一个闭包,而不是一个 lambda 表达式。我们知道,这个闭包接受一个参数 e,但它也捕获并携带 factor 变量的状态。
以上就是java闭包的概念详解,对于一些绑定和延迟的需求 *** 作上比较好用,学完后对于闭包的内容已经有大致了解,再下次遇到类似情况时,可以选择闭包的方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)