【问题标题】:Java - Private scopeJava - 私有范围
【发布时间】:2015-03-30 17:36:10
【问题描述】:

在JS中,你可以做例如:

(function() {
    var x = 7;
})();

console.log(x);

这将记录 undefined 因为 x 只在它自己的小范围内定义。

在java中做同样事情的原始/最佳/正常方法是什么?

不是这个,因为我觉得它看起来很丑:

...
public static void main(String[] args) {
    do {
       int x = 7;
    } while (false) {}

    System.out.println(x);
}
...

谢谢。

【问题讨论】:

  • 为什么要投反对票?请详细说明原因
  • 没有足够的研究工作。
  • 真的,如果你是这样的话,你会早点添加评论的。
  • @你到底在问什么?您的问题的标题是私有范围,并且在您询问变量范围的框中?

标签: java scope


【解决方案1】:

JavaScript 是一种解释型语言,因此您会在运行时遇到此类错误。不同的是,Java 是一种编译语言,因此编译器会在编译时捕获这种错误。

Java 程序在运行时不可能出现此错误。

【讨论】:

  • @Murplyx 你已经拥有的应该足以让变量范围出错
  • k 但是有没有任何 smooother 方法比丑陋的 while 循环甚至不是循环?
  • @Murplyx 你想要一个平滑的方法来得到一个错误?!请问有什么用吗?
  • 这与在 java 中获得与在 js 中相同的代码无关紧要
  • 这是不可能的,正如我所说的。两种语言都遵循完全不同的概念。
【解决方案2】:

如果您希望 x 是私有的,那么您可以将其声明为私有 //如果你不希望 x 是私有的,你可以给任何访问说明符

private int x;

and can initialize it later 
as

public static void main(String[] args) {
    do {
       x = 7;
    } while (false) {}

    System.out.println(x);
}

您的代码:

 public static void main(String[] args) {
        do {
          int x = 7;
        } while (false) {}

        System.out.println(x);
    }

这将引发未定义的异常,因为该变量是在 do 内部定义的,因此其范围仅在 while do 循环之前,因此无法在外部访问。

【讨论】:

  • 他要求的是方法范围的变量,而不是类字段。
猜你喜欢
  • 2017-02-25
  • 2010-09-10
  • 2016-10-12
  • 2017-11-18
  • 2013-01-20
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2016-07-20
相关资源
最近更新 更多