Scala: Como saber se uma classe é uma enumeração; isInstanceOf [Contagem] não funciona

StackOverflow https://stackoverflow.com/questions/1691865

  •  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!

Foi útil?

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
scroll top