An Overview of the Scala Programming Language, Second Edition から:
// 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 で定義されたクラスであるメソッド
startsWithおよびsubstringof を呼び出します。Stringまたout、Java クラスの static フィールドにアクセスし、その (オーバーロードされた)メソッドSystemを呼び出します。printlnこれは、Scala に静的クラス メンバーの概念がない場合でも可能です。実際、すべての Java クラスは Scalaでは 2 つのエンティティとして認識されます。すべての動的メンバーを含むクラスと、すべての静的メンバーを含むシングルトン オブジェクトです。
Scala のコンパニオン オブジェクトを Java バイトコードに変換することは理解していますが、反対の例 (Java から Scala へ)の上部ブロック引用符 " is seen in Scala " の太字テキストが正確に何を意味するのかはわかりません。
静的メンバーを持つ Java クラスが実際に変換されたり、Scala の 2 つのエンティティとして解釈されたりするということですか? それとも私の仮定の両方が間違っていますか?