Duvida com String X Switch X Enum

4 respostas
P

Olá pessoal,

tenho uma duvida do seguinte :

tenho um campo String que contém :

  • “SP”
  • “RJ”
  • “MG”

…etc

e existe um Enum com o nome TEstado com atributos :

  • X_11 com o valor de 11 que equivale “RO”
  • X_53 com o valor de 53 que equivale “SP”

como poderia montar um switch para controlar isso onde

tenho que comparar mas swuitch não aceita String…

Alguém teria alguma forma de fazer isso …

abs

4 Respostas

Rafael_Nunes

Por que a sua enum chama ‘X_11’ e não ‘SP’?

fiaux

A pergunta de cima ainda é válida.
Para usar no switch você pode usar o ordinal do enum.

gobbo

http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html

acho que isso ai irá ajudar…

ViniGodoy

Em OO você tem diversas alternativas melhores do que montar um switch:

1. Crie um método estático chamado porSigla, e faça ele retornar o seu enum:

public enum TEstado {
   SP("SP"),
   X_11("RO");

   private String sigla;
   private TEstado(String sigla) {this.sigla = sigla;}

   public static String porSigla(String sigla) {
      for (TEstado estado : TEstado.values())
         if (estado.sigla.equals(sigla))
               return estado;
      throw new IllegalArgumentException("Sigla inexistente!");
   }
}
Aí vc usa assim:
TEstado estado = TEstado.porSigla("RO");

2. Se precisar realmente de performance, crie um mapa:

private Map<String, TEstado> siglaParaEstado = new HashMap<String, Estado>();

public void carregarMapa() {
    for (TEstado estado : TEstado.values()) {
          siglaParaEstado.put(estado.toString(), estado);
    }
}

public TEstado estadoPelaSigla(String sigla) {
    return siglaParaEstado.get(sigla);
}
Criado 17 de julho de 2008
Ultima resposta 17 de jul. de 2008
Respostas 4
Participantes 5