代码之家  ›  专栏  ›  技术社区  ›  Adam Harte

私有常量有什么用吗,它不是静态的?

  •  2
  • Adam Harte  · 技术社区  · 15 年前

    有没有理由要有一个私有常量,它不是静态的?有没有需要一个非静态的私有const的情况?如果常量在默认情况下是静态的,这有意义吗?

    我使用ActionScript3和一些Java,但我认为这是一个更广泛的OOP问题。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Thilo    15 年前

    我不知道这是否有用,但在Java中,需要使局部变量成为final,以便能够在内部类中使用它们(因为Java没有真正的闭包,而是复制捕获的作用域,而这个作用域必须是不可变的):

     void test(){
          final long startTime = System.currentTimeMillis();   // needs to be final
          new Runnable(){
              System.out.println(startTime);
          }.run();
     }
    

    此外,您还可以将字段和变量设为final,以防止意外地重新分配它们(编译器和运行时也可以使用此信息进行性能优化)。

    当然,这两个例子实际上都不是关于数学意义上的常量(Java中的最终变量可以根据变量输入分配给计算表达式)。

        2
  •  1
  •   Thomas    15 年前

    除了访问匿名类中的变量(如Thilo所说)之外的另一个原因是,如果您想要一个不能更改赋值的对象,但它保持当前对象的某些状态,因此您不能在该类的多个实例之间共享它。

        3
  •  1
  •   vc 74    15 年前

    C#有这样的概念 readonly fields i、 e.只能在构造函数中分配,不能在任何其他方法中更改的字段。它们类似于类的特定实例(在其构造函数之外)的常量,而不是类本身的常量。

    推荐文章