Reflection Scala:如何知道类是否是枚举;isInstanceOf[Enumeration]不';行不通

Reflection Scala:如何知道类是否是枚举;isInstanceOf[Enumeration]不';行不通,reflection,scala,enumeration,Reflection,Scala,Enumeration,我正在scala中编写一个序列化程序,用于将对象(或模型)保存到数据库(用于app engine),我需要将一些字段视为特殊情况。例如,如果字段的类型为Array[Byte],则将其保存为blob。我也需要将枚举作为特例来处理,但我不知道如何知道类型是否是枚举 例如: object UserType extends Enumeration { val Anonym, Registered, Admin, Super = Value } var value = UserType.Admi

我正在scala中编写一个序列化程序,用于将对象(或模型)保存到数据库(用于app engine),我需要将一些字段视为特殊情况。例如,如果字段的类型为Array[Byte],则将其保存为blob。我也需要将枚举作为特例来处理,但我不知道如何知道类型是否是枚举

例如:

object UserType extends Enumeration {
    val Anonym, Registered, Admin, Super = Value
}

var value = UserType.Admin  
value.isInstanceOf[Enumeration] // this returns false
我也不能执行
value.isInstanceOf[Enumeration.value]
,因为值是私有的。。。无论如何,我认为这也会返回false

有什么想法吗?

谢谢

您可以使用以下方法解决此问题:

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
intellij会把它变成红色的——忽略它,它就像一个符咒
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