Given is a Java method that returns java.lang.Objects for a given string. I\'d like to wrap this method in a Scala method that converts the returned instances t
You could try shapeless's Typeable,
scala> import shapeless._ ; import syntax.typeable._
import shapeless._
import syntax.typeable._
scala> def someJavaMethod(key: String): AnyRef =
| key match {
| case "keyToSomeInt" => 23.asInstanceOf[AnyRef]
| case "keyToSomeString" => "foo"
| }
someJavaMethod: (key: String)AnyRef
scala> def convert[T: Typeable](key: String): Option[T] =
| someJavaMethod(key).cast[T]
convert: [T](key: String)(implicit evidence$1: shapeless.Typeable[T])Option[T]
scala> convert[Int]("keyToSomeInt")
res0: Option[Int] = Some(23)
scala> convert[String]("keyToSomeString")
res1: Option[String] = Some(foo)
scala> convert[String]("keyToSomeInt")
res2: Option[String] = None
scala> convert[Int]("keyToSomeString")
res3: Option[Int] = None