Я стараюсь, чтобы получить во время выполнения типа переменной (не тип ссылки), то есть на выходе я получаю в консоли Scala:Невозможно получить тип выполнения переменной в Scala
scala> val data = Seq(1,2,3)
data: Seq[Int] = List(1, 2, 3)
Меня интересует, что стандартная реализация Seq
- это List
.
Как я могу получить эту информацию в обычном приложении Scala?
Я пробовал:
val data = Seq(1,2,3)
println(data.getClass)
, но это дает
class scala.collection.immutable.$colon$colon
Edit: Кажется, что я неправильно истолкован выходу консоли лестницы. List
- это не тип времени выполнения, а точный тип времени компиляции. Тип ссылки является Seq
I все еще не понимаю, почему консоль scala говорит 'List', а не' :: '? –
Seq (...) возвращает «Список», консоль ссылается на тип времени компиляции. Когда вы используете getClass, вы получаете точный тип времени выполнения. '::' является подтипом 'List'. 'List' - это infact abstract, поэтому вы никогда не получите' List' как тип времени выполнения, он всегда будет '::' или 'Nil'. – puhlen