我有以下代码:
case class Property(name: String, value: Option[Any])
class PropertyType[+T <: Any: ru.TypeTag] {
def isValidType(property: Property): Boolean = {
property.value match {
case None => true
case Some(value) => ru.typeOf[T] == getTypeTag(value)
}
}
private def getTypeTag[TT: ru.TypeTag](obj: TT) = ru.typeTag[TT]
}
case object StringPropertyType extends PropertyType[String]
当然,StringPropertyType.isValidType(Property("test", Some("test))) 返回 false,因为 getTypeTag(Property.value.get) 返回 Any。
我想知道如何使它工作,因为 getClass on value 返回字符串:
scala> Property("test", Some("test")).value.get.getClass
res4: Class[_] = class java.lang.String
如何获取 Option[Any].get 的实际值类型?