Scala 没有为同伴 class 创建私有构造函数

Scala is not creating private constructor for companion class

我是 scala 的新手,正在尝试了解 scala oops 概念。 我创建了一个 class 作为:

class MyComp private{
    // some fields and method goes here
    }

当我将其编译为

scalac MyComp.scala

它创建一个私有构造函数。但是当我创建一个伴随对象而不是构造函数时 public ,我无法理解这个概念。请澄清

这是 MyComp class

伴随对象的代码
object MyComp
{
    private val comp= new MyComp;
    def getInstance= comp;
}

JVM 不理解伴随对象的概念(以及 Scala 语言的其他概念)。

因此,scalac 别无选择,只能根据 Java 字节码构造 MyComp public 的构造函数,否则 JVM 将不允许 MyComp$MyComp 的伴侣 class,通常称为模块 class) 来实例化 MyComp。这是因为从 JVM 的角度来看 MyCompMyComp$ 完全无关。

Scalac 尝试在最大努力的基础上保持可见性修饰符,但有时必须增加字节码中的可见性以支持一些特定于 Scala 的规则。