Podana jest metoda Java, która zwraca java.lang.Object
s dla danego ciągu znaków. Chciałbym zawrzeć tę metodę w metodzie Scala, która konwertuje zwracane instancje do pewnego typu T
. Jeśli konwersja nie powiedzie się, metoda powinna zwrócić None
. Szukam coś podobnego do tego:Odlewanie za pomocą parametru typu
def convert[T](key: String): Option[T] = {
val obj = someJavaMethod(key)
// return Some(obj) if obj is of type T, otherwise None
}
convert[Int]("keyToSomeInt") // yields Some(1)
convert[String]("keyToSomeInt") // yields None
(Jak) Można to osiągnąć za pomocą Scala odbicie API? Mam świadomość, że podpis convert
może wymagać zmiany.
Dzięki tak dużo za to. Zrobiłem własny "safeCast [T: ClassTag]" na niejawnej konwersji z Opcji [Any], ale zauważyłem, że prymitywy zawsze zwracały Brak. Używając Typeable I zmieniłem body na prostą 'opt.flatMap (_. Cast [T])' i działa świetnie. – ShawnFumo