Как я могу использовать оператор "match" для определения значения переменной класса? Следующее недействительно, и я не могу найти приемлемый вариант - кроме, если ... еще, если ... еще ...
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
, но все безрезультатно. (И я действительно не хочу преобразовывать в строки: я чувствую, что важно, чтобы перехватчик компилятора переименовал / переместил классы.)
Я плотный или наткнулся на слепое пятно Скалы?