Как я могу использовать оператор "match" для определения значения переменной класса? Недопустимо следующее: я не могу найти приемлемый вариант - кроме if... else if... else...
val c: Class[_] = classOf[Int]
val what = c match { case classOf[Int] => "int!"; case classOf[Float] => "float!" }
Компилятор жалуется: error: not found: type classOf
И, конечно, я не могу использовать Class[Int]
, потому что эта информация типа удаляется:
c match { case Class[Int] => "int!"; case Class[Float] => "float!" }
error: type Class of type Class does not take type parameters.
Я также пробовал варианты вроде Int.class
, все безрезультатно. (И я действительно не хочу конвертировать в строки: я считаю важным, чтобы компилятор переименовал/переместил классы.)
Я плотный, или я наткнулся на слепое пятно Scala?