Scala: Como saber se uma classe é uma enumeração; isInstanceOf [Contagem] não funciona
-
18-09-2019 - |
Pergunta
Estou em scala escrever um serializador que salva um objeto (ou modelo) para o banco de dados (para o motor app), e eu preciso para tratar alguns campos como casos especiais. Por exemplo, se o campo é do tipo Array [Byte], eu guardá-lo como uma bolha. E eu preciso Enumerations tratar como casos especiais também, mas eu não consigo descobrir como saber se um tipo é uma enumeração.
Por exemplo:
object UserType extends Enumeration {
val Anonym, Registered, Admin, Super = Value
}
var value = UserType.Admin
value.isInstanceOf[Enumeration] // this returns false
Nem eu posso fazer value.isInstanceOf[Enumeration.Value]
já que o valor é privado ... de qualquer forma eu acho que retornar falso também.
Qualquer idéia?
Obrigado!
Solução
value.isInstanceOf[Enumeration$Value]
Outras dicas
Você pode descobrir isso usando estes métodos:
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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow