微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是封包?Java是否有闭包?

如何解决什么是封包?Java是否有闭包?

闭包是具有绑定变量的第一类函数

大致意味着:

  • 您可以将闭包作为参数传递给其他函数
  • 闭包存储创建时存在的词法作用域中某些变量的值

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);
    }
}

解决方法

我正在阅读面向对象的Javascript,并发现了闭包的概念。我不太明白为什么以及何时使用它。其他语言(例如Java)也有闭包吗?我基本上想了解了解闭包的概念如何帮助我改善编码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。