Answers
就拿楼主的例子说明:
用scalac编译成功后,会生成两个class文件,AAA.class和AAA$.class。
使用javap工具可查看结构。
$ javap -p AAA.class
Compiled from "AAA.scala"
public final class AAA {
public static final void foo(); //此处调用AAA$.MODULE$.foo()
}
$ javap -p AAA$.class
Compiled from "AAA.scala"
public final class AAA$ implements scala.ScalaObject {
public static final AAA$ MODULE$;
public static {}; //静态初始化 MODULE$
public void foo(); //这里是foo的真实实现
private AAA$(); //禁止外部初始化。
}
由此可知,AAA是静态类,不保证单例。
NRCLM
answered 12 years, 5 months ago