来自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 程序调用方法
startsWith
和substring
ofString
,这是在 Java 中定义的类。它还访问out
Java 类的静态字段System
,并调用其(重载)println
方法。即使 Scala 没有静态类成员的概念,这也是可能的。事实上,每个 Java 类在 Scala 中都被视为两个实体,一个包含所有动态成员的类和一个包含所有静态成员的单例对象。
我了解将 Scala 的伴随对象翻译成 Java 字节码,但我不确定对于相反的示例(从 Java 到 Scala) ,上部块引用中的粗体文本“在 Scala 中看到”到底是什么意思。
这是否意味着具有静态成员的 Java 类实际上被转换或只是解释为 Scala 中的两个实体?还是我的两个假设都是错误的?