Duvida com String X Switch X Enum

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

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

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

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

acho que isso ai irá ajudar…

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:

[code]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!”);
}
}
[/code]
Aí vc usa assim:

TEstado estado = TEstado.porSigla("RO");
  1. 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);
}