Uma outra forma de fazer isso, bem interessante, que pode ser aplicada em qualquer caso onde os valores são predefinidos. Não é exatamente o que você quer, mas pode te servir no futuro:
enum Sexo {
INVALIDO("", "Inválido"),
MASCULINO("M", "Masculino"),
FEMININO("F", "Feminino");
Sexo(String tag, String descricao) {
this.tag = tag;
this.descricao = descricao;
}
public String getTag() {
return tag;
}
public getDescricao() {
return descricao;
}
public static Sexo fromTag(String tag) {
for (Sexo sexo : Sexo.values())
if (sexo.getTag().equals(tag))
return sexo;
return INVALIDO;
}
public boolean valido() {
return this != INVALIDO;
}
public String toString() {
return getDescricao();
}
}
Não é o caso aqui (bom, depente, hehe), mas dessa forma sua lista de valores pode aumentar ou diminuir, sem que seja necessária qualquer alteração na classe, além, claro, das contantes do enum.
Usa-se assim:
(...)
Sexo sexo = Sexo.fromTag("F");
System.out.println(sexo); //saída: "Feminino"
(...)
Sexo sexo = Sexo.fromTag("G");
if (!sexo.valido())
System.out.println("Olá, bom dia! Eu admiro sua coragem, mas precisamos de M ou F."); //evita processo por discriminação;
else
System.out.println(String.format("Valor OK: %s", sexo.getDescricao()));
(...)