Написание универсальной функции приведения в Scala

Я пытаюсь написать метод, который приводит значение Any к определенному типу и возвращает параметр вместо генерации исключения, такого как instanceOf. Scala ведет себя не так, как я ожидал:

def cast[A](value: Any): Option[A] =
{
  try
  {
    Some(value.asInstanceOf[A])
  } catch
  {
    case e: Exception => None
  }
}

Тест:

val stringOption: Option[String] = cast[String](2)
stringOption must beNone

не выполняется с ошибкой

java.lang.Exception: 'Some(2)' is not None

Кто-то знает, почему?

17
задан Bastian Echterhölter 14 August 2011 в 20:14
поделиться