0

我创建了一个带有私有构造器的类 ApplyDemo

class ApplyDemo private{
    override def toString()="ApplyDemo"
}

我创建了类的伴生对象为

object ApplyDemo
{
     def apply()={
            Console.println("calling Apply");
            new ApplyDemo
        }
}

现在我创建了一个主应用程序类:

object MainApp extends App{

        val a=ApplyDemo;
        Console.println(a);
}

出于好奇,我在 apply 方法中放了一个 println 语句。但这不叫。我只是想知道为什么不调用 println 。

PS类和同伴都在同一个文件中

谢谢

4

1 回答 1

0

我能够在 scala repl 中得到答案:表达式:

val a= ApplyDemo

正在将一种类型的 ApplyDemo 分配给变量 a 和 scala repl 说:

a: ApplyDemo.type = ApplyDemo$@xxxxxx

和表达

val a= ApplyDemo()

调用伴生类中的应用方法,repl 说。

调用 Apply
a1: ApplyDemo = ApplyDemo

感谢 bjfletcher

于 2015-07-10T01:51:39.480 回答