2009-11-07 86 views
2

我在斯卡拉寫,節省了一個對象(或模型)的數據庫(應用引擎)串行,我需要把一些領域的特殊情況。例如,如果該字段的類型是Array [Byte],那麼我將它另存爲一個blob。我還需要將Enumerations作爲特例處理,但我無法知道如何知道類型是否枚舉。Scala:如何知道某個類是否枚舉; isInstanceOf [枚舉]不起作用

例如:

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了。

任何想法?
謝謝!

回答

6
value.isInstanceOf[Enumeration$Value] 
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