对象私有变量实现

时间:2013-05-09 07:23:45

标签: scala

我正在尝试理解Scala中对象私有变量的实现。 Scala编译这个类

class Counter{
    private[this] var age = 0
}

进入以下java字节码:

public class Counter implements scala.ScalaObject {
  private int age;
  public Counter();
}

但是,由于JVM不支持对象私有字段,因此我们拥有古老的私有字段,可以从该类的其他实例访问。所以对我来说,隐藏私有字段的前一课和下一课之间的区别并不清楚。

class Counter2{
    private var age = 0
}

public class Counter2 implements scala.ScalaObject {
  private int age;
  private int age();
  private void age_$eq(int);
  public Counter2();
}

1 个答案:

答案 0 :(得分:1)

JVM无关紧要。 Scala的语义由Scala编译器实现,而不是JVM。毕竟,JVM甚至不是Scala运行的唯一平台,在CLI上有Scala的生产就绪实现,以及ECMAScript和本地实现的实验。