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 に答える