2017-01-29 12 views
-4

Was ist der Typ dieses Objekts?SCALA: Objekttyp

class Zad1[A,B](val fst:A, val snd:B) { 
    override def toString: String = "(" + fst +","+snd+")" 
} 

object Zad1 { 
    def main(args: Array[String]): Unit = { 
    val v = new Zad1[Int, String](1, "2") 
    println(v) 
    } 
} 

Ich habe versucht, die Klassennamen mit drucken:

println(v.getClass) // would print: class $line8.$read$$iw$$iw$Zad1 
+0

println (v.getClass.getName) –

Antwort

1

Der Typ eines Singleton object sein Singleton-Typ, ergo, die Art der Zad1 ist Zad1.type.

+0

Aus der Frage, es scheint, will er die Art von 'v', nicht' Zad1' wissen. –

1

Dies hängt damit zusammen, wie Scala REPL funktioniert. Obwohl Sie schreiben, gerade:

scala> class Zad1[A,B](val fst:A, val snd:B) {...} 

REPL wickelt es in eine Reihe von anderen Objekten ($line8.$read.$iw.$iw), so getClass kehrt class $line8.$read$$iw$$iw$Zad1.

Lesen Sie mehr über es hier: Trying to understand how classes declared on the REPL are treated internally

Wenn Sie das gleiche wie ein Scala-Programm (nicht von REPL) ausführen, wird getClass etwas viel lesbar zurückgeben, z class com.example.Zad1