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