相关疑难解决方法(0)

如何在Scala中编写"asInstanceOfOption"

是否可以编写一个"asInstanceOfOption"方法来执行以下(伪造)代码的意图?

def asInstanceOfOption[T](o: Any): Option[T] =
   if (o.isInstanceOf[T]) Some(o.asInstanceOf[T]) else None 
Run Code Online (Sandbox Code Playgroud)

scala

26
推荐指数
1
解决办法
3118
查看次数

使用类型参数键入cast

给定是一个Java方法,它返回java.lang.Object给定字符串的s.我想将此方法包装在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
Run Code Online (Sandbox Code Playgroud)

(如何)使用Scala的反射API可以实现这一目标吗?我很清楚,convert可能必须改变签名.

reflection scala shapeless

11
推荐指数
2
解决办法
3231
查看次数

标签 统计

scala ×2

reflection ×1

shapeless ×1