闭包是具有绑定变量的第一类函数。
大致意味着:
- 您可以将闭包作为参数传递给其他函数
- 闭包存储创建时存在的词法作用域中某些变量的值
Java最初没有对闭包的语法支持(Java 8中引入了闭包),尽管使用匿名内部类模拟闭包是相当普遍的做法。这是一个例子:
import java.util.Arrays;import java.util.Comparator;public class StupidComparator { public static void main(String[] args) { // this is a value used (bound) by the inner class // note that it needs to be "final" final int numberToCompareTo=10; // this is an inner class that acts like a closure and uses one bound value Comparator<Integer> comp=new Comparator<Integer>() { public int compare(Integer a, Integer b) { int result=0; if (a<numberToCompareTo) result=result-1; if (b<numberToCompareTo) result=result+1; return result; } }; Integer[] array=new Integer[] {1,10, 5 , 15, 6 , 20, 21, 3, 7}; // this is a function call that takes the inner class "closure" as a parameter Arrays.sort(array,comp); for (int i:array) System.out.println(i); }}


