来自第二版《Scala编程语言概述》:
// Scala
object PrintOptions {
def main(args: Array[String]): Unit = {
System.out.println("Options selected:")
for (val arg <- args)
if (arg.startsWith("-"))
System.out.println(" " + arg.substring(1))
}
}
在上面的示例中,Scala程序调用了Java中定义的类String的方法startsWith和substring。它还访问了Java类System的静态字段out,并调用了其(重载的)println方法。尽管Scala没有静态类成员的概念,但这是可能的。事实上,每个Java类在Scala中都被视为两个实体:一个包含所有动态成员的类和一个包含所有静态成员的单例对象。
我理解Scala的伴生对象转换为Java字节码的翻译,但我不确定上述引用中粗体文本“在Scala中看到”的确切含义,反之亦然(从Java到Scala的相反情况)。
这是否意味着具有静态成员的Java类实际上被转换或只是在Scala中作为两个实体进行解释?或者我的两种假设都是错误的?