1

我试图了解 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();
}
4

1 回答 1

1

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

于 2013-05-09T11:30:33.400 回答