2017-01-29 3 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 является его одноплодной типа, эрго, тип Zad1 является Zad1.type.

+0

Спрашивается, что он хочет знать тип 'v', а не' Zad1'. –

1

Это связано с тем, как работает Scala REPL. Хотя вы наберете просто:

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

РЕПЛ оборачивает его в ряд других объектов ($line8.$read.$iw.$iw), так getClass возвращает class $line8.$read$$iw$$iw$Zad1.

Читайте об этом здесь: Trying to understand how classes declared on the REPL are treated internally

Если запустить такой же, как программы Scala (не из РЕПЛ), getClass будет возвращать что-то очень читаемым, например, class com.example.Zad1

Смежные вопросы