我正在使用scala编写一个将对象(或模型)保存到数据库(用于app引擎)的序列化程序,我需要将某些字段视为特殊情况。例如,如果字段的类型为Array [Byte],则将其另存为blob。我需要将Enumerations视为特殊情况,但我无法知道如何知道类型是否为枚举。
例如:
object UserType extends Enumeration {
val Anonym, Registered, Admin, Super = Value
}
var value = UserType.Admin
value.isInstanceOf[Enumeration] // this returns false
我都不能value.isInstanceOf[Enumeration.Value]
,因为价值是私有的......无论如何,我认为这也会失败。
任何想法?
谢谢!
答案 0 :(得分:7)
value.isInstanceOf[Enumeration$Value]
答案 1 :(得分:4)
您可以使用以下方法解决这个问题:
scala> value.getClass
res102: java.lang.Class[_] = class scala.Enumeration$Val
scala> value.getClass.getSuperclass
res103: java.lang.Class[_ >: ?0] = class scala.Enumeration$Value
scala> value.getClass.getSuperclass.getSuperclass
res104: java.lang.Class[_ >: ?0] = class java.lang.Object