当前位置: 首页 > 面试题库 >

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

谷博艺
2023-03-14
问题内容

我正在阅读面向对象的Javascript,并发现了闭包的概念。我不太明白为什么以及何时使用它。其他语言(例如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);
    }
}


 类似资料:
  • 问题内容: 我很困惑。我以为Java 8将会从石器时代诞生并开始支持lambda / closures。但是当我尝试这个: …说。恩,我想不是闭包。听起来好像是通过值而不是通过引用复制环境。 奖金问题! Android是否支持Java 8功能? 问题答案: 为什么,为什么,Java。为什么哦为什么。 您需要与相关的Oracle Java团队成员进行长时间的(私人)讨论,以获得真正的答案。(如果他们

  • 本文向大家介绍什么是闭包?优缺点分别是什么?相关面试题,主要包含被问及什么是闭包?优缺点分别是什么?时的应答技巧和注意事项,需要的朋友参考一下 上面就是闭包,有独立的作用域,且作用域的变量不会在程序中释放

  • 我正在尝试制作一个俄罗斯方块游戏,我得到了编译器错误 当我尝试创建对象时 我对每个形状都使用内部类。这是我的部分代码 我做错了什么?

  • 问题内容: 有人知道Java 7是否会使用闭包吗? 问题答案: 在Devoxx 2008上,Mark Reinhold明确指出Java 7 中将不 包括闭包。 等待!闭包 将 包含在Java 7中。Mark Reinhold 在Devoxx 2009上宣布了这一逆转。 系住那个!闭包( lambda表达式 )已推迟到Java 8为止。有关更多信息,请遵循Project Lambda(JSR 335

  • 本文向大家介绍什么是js的闭包?有什么作用,用闭包写个单例模式相关面试题,主要包含被问及什么是js的闭包?有什么作用,用闭包写个单例模式时的应答技巧和注意事项,需要的朋友参考一下 参考回答: MDN对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数中使用的,但既不是函数参数又不是函数的局部变量的变量,由此可以看出,闭包=函数+函数能够访问的自由变量,所以从技术的角度讲,所有JS

  • 本文向大家介绍什么是闭包(closure)为什么要用它相关面试题,主要包含被问及什么是闭包(closure)为什么要用它时的应答技巧和注意事项,需要的朋友参考一下 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。 闭包的特性: 1.函数内再嵌套函数