2017-01-29 188 views
-4

此對象是什麼類型的?SCALA:對象類型

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) 
    } 
} 

我試圖用打印類名:

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

println(v.getClass.getName) –

回答

1

類型單身object的是它的單式,ERGO的Zad1類型是Zad1.type

+0

從出現的問題中,他想知道'v'的類型,而不是'Zad1'。 –

1

這與Scala REPL如何工作有關。 雖然你只需要輸入:

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

REPL把它包裝成一個系列中的其他對象($line8.$read.$iw.$iw),所以getClass返回class $line8.$read$$iw$$iw$Zad1

讀到它在這裏: Trying to understand how classes declared on the REPL are treated internally

如果運行一樣Scala程序(不REPL),getClass將返回太多的東西可讀,例如class com.example.Zad1