【问题标题】:What is the equivalent of Javascript function closure in Java?Java中的Javascript函数闭包等价物是什么?
【发布时间】:2017-12-07 22:25:48
【问题描述】:

虽然 Javascript 不像 Java,但在 java 中,Javascript 函数闭包的等价物是什么?为什么我们需要闭包?

这是我的理解 1. java 中的私有变量和受保护变量可以被该类中的所有方法访问。 2. 有没有一种方法可以增加一个私有变量,只允许访问 Java 类中的一个方法? 3. 如果第 2 点的答案是否定的,那么为什么 JavaScript 中的闭包可以满足这样的要求? 4.我们在哪里可以面对上面第2点的要求?

【问题讨论】:

  • 你能举个例子说明你所说的“js函数闭包”吗?
  • 实例变量和方法基本上是我们对闭包的替代。我更喜欢它们,因为您可以限制方法看到的变量数量。
  • 我问我们为什么需要闭包? java中是否有任何等价物?
  • 这太宽泛了。
  • 您能以什么方式解释一下吗?

标签: javascript java function closures


【解决方案1】:

在java中,你不需要“闭包”。你在一个函数中拥有的只是这个函数,你应该尽量不要对所有东西都使用静态。

Java 是面向对象的,对象中的变量可以被该对象的所有方法访问。如果您不希望其他对象访问它,请使用“私有”标签。

//Class
public class HelloWorld(){
  private int var1;
  public String var2;

  // Constructor
  public HelloWorld(){
  }

  public void function1(){
    //here you can use var1 and var2.
  }

  private void function2(){
    //here you can use var1 and var2.
  }

  // If you have a parameter with same name, you should use this
  private void  function3(int var1){
    // this.var1 object variable
    // var1 method variable
  }
}

//From another object:
public class ByeWorld(){

  private HelloWorld anInstanceOfHelloWorld;

  public ByeWorld(){
    anInstanceOfHelloWorld = new HelloWorld();

    // var2 is public you can use it (NO RECOMENDABLE) 
    anInstanceOfHelloWorld.var2;
    anInstanceOfHelloWorld.function1();

    // YOU CANT
    // anInstanceOfHelloWorld.var1 // is private
    // anInstanceOfHelloWorld.function2() // is private
    //...
  }
}

我希望这对您有所帮助。

【讨论】:

    猜你喜欢
    • 2014-12-06
    • 2012-02-02
    • 2021-09-21
    • 2016-07-04
    • 2010-11-16
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多