鉴于给定的Java方法返回给定字符串的java.lang.Object
。我想将这个方法包装在一个Scala方法中,该方法将返回的实例转换为某种类型的T
。如果转换失败,该方法应返回None
。我正在寻找类似的东西:使用类型参数进行类型转换
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
(如何)这可以实现使用Scala的反射API?我很清楚,convert
的签名可能不得不改变。
非常感谢这一点。我从Option [Any]的隐式转换中创建了自己的'safeCast [T:ClassTag]',但注意到原语总是返回None。使用Typeable我将主体改为了一个简单的'opt.flatMap(_。cast [T])',它效果很好。 – ShawnFumo