Я хотел бы написать функцию, которая отбрасывает тип A, где A может быть, например, Список [Int] или более сложный параметризованный тип, такой как Map [Int, List [Int]].
def castToType[A](x: Any): A = {
// throws if A is not the right type
x.asInstanceOf[A]
}
Прямо сейчас, из-за стирания типа (я считаю), код весело работает, даже если тип неверен. Ошибка проявляется только при доступе, с ClassCastException.
val x = List(1, 2, 3)
val y = castToType[List[String]](x)
y(0) --> throws java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
Есть ли способ использовать манифесты для правильной работы? Спасибо!