Ich versuche zu bekommen den Runtime-Typen einer Variablen (nicht die Art der Referenz), dh die Ausgabe erhalte ich in der Scala-Konsole zu erhalten:Unable Laufzeit Typen einer Variablen in Scala
scala> val data = Seq(1,2,3)
data: Seq[Int] = List(1, 2, 3)
Was mich hier interessiert, ist, dass die Standardimplementierung von Seq
ein List
ist.
Wie kann ich diese Informationen in einer normalen Scala-Anwendung erhalten?
Ich habe versucht:
val data = Seq(1,2,3)
println(data.getClass)
aber das gibt
class scala.collection.immutable.$colon$colon
Edit: Es scheint, dass ich die Ausgabe der scala Konsole falsch interpretiert. List
ist nicht der Laufzeittyp, sondern der genaue Kompilierungszeittyp. Die Art der Referenz ist Seq
I verstehe immer noch nicht, warum die Scala-Konsole 'List' und nicht' :: 'sagt? –
Seq (...) gibt eine 'List' zurück, die Konsole verweist auf den Kompilierzeittyp. Wenn Sie getClass verwenden, erhalten Sie den genauen Laufzeittyp. '::' ist ein Untertyp von 'List'. 'List' ist infact abstrakt, so dass Sie niemals eine' List' als Laufzeittyp bekommen, sondern immer ein '' 'oder ein' Nil'. – puhlen