これList
は、ケースクラス::
とオブジェクトの上にある封印されたスーパークラスであるためです(リストドキュメントの既知のサブクラスNil
のセクションを参照してください)。はconsと発音され、ほとんどの従来の関数型プログラミング言語のlistcons演算子にちなんで名付けられています。::
リストヘッドは実際にはcaseクラスのインスタンスであり::
、Scalaは名前マングリングを使用してJVM上の非単語クラス名を表す$colon$colon
ため、リフレクションを使用して名前を取得することになります。
更新:クラス名を何に使用しようとしているのか正確にはわかりませんが、stringPrefix
代わりに使用できる可能性があります。これは、拡張するものすべてに対して定義されておりGenTraversableLike
、ほとんどすべてのScalaコレクションタイプになります。
クラス名を使用して制御フローを実行しようとしている場合は、おそらく別のことを試してください。パターンマッチングはうまく機能します。例:
xs match {
list: List[_] => // do list stuff
set: Set[_] => // do set stuff
}