2

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

例如:

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

var value = UserType.Admin  
value.isInstanceOf[Enumeration] // this returns false

因为 Value 是私有的,所以我也不能这样做value.isInstanceOf[Enumeration.Value]......无论如何,我认为这也会返回 false 。

任何的想法?
谢谢!

4

2 回答 2

7
value.isInstanceOf[Enumeration$Value]
于 2009-11-07T03:43:52.287 回答
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
于 2009-11-07T06:26:37.987 回答