Dúvida com ENUM [RESOLVIDO]

Pessoal,

Tenho minha classe (ENUM) onde deixo valores pré definidos para quando pesquisar… verificar se está como um daqueles tipos enumerados… só que quando não encontro valor igual coloco 0 (que significa um código de NENHUM)

Eu queria saber se… quando o campo for realmente vazio colocar esse código 0, mas se tiver algo preenchido, diferente da lista, colocar um outro valor.

[code]NENHUM(0, “”),
CLARO(1, “claro”),
GENERICA_CLARO(2, “generica.claro”),
PORTA(3, “porta”);

private int codigo;
private String descricao;

private ValoresPlanilhaEnum(int codigo, String descricao) {
	this.codigo = codigo;
	this.descricao = descricao;
}

public static ValoresPlanilhaEnum obterValorPorDesc(String desc) {
	ValoresPlanilhaEnum valoresPlanilhaEnum = NENHUM;

	for (ValoresPlanilhaEnum valores : ValoresPlanilhaEnum.values()) {
		if (desc != null && valores.getDescricao().equals(desc)) {
			valoresPlanilhaEnum = valores;
		}
	}

	return valoresPlanilhaEnum;
}

public int getCodigo() {
	return codigo;
}

public void setCodigo(int codigo) {
	this.codigo = codigo;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

}[/code]

Aí não seria um enum, certo?

Só para você ficar ciente: quando você cria um enum, na verdade está declarando uma classe derivada de java.lang.Enum, e que tem apenas N elementos, que estão todos listados no enum.

Por exemplo, no seu caso, a enum que você gerou tem exatamente 4 objetos: NENHUM, CLARO, GENERICA_CLARO e PORTA.

Você está querendo que no caso em que não achar a descrição, criar um novo objeto que tem essa descrição que não foi achada na lista. Mas com enums é impossível criar um novo objeto.

Entendi… é que é o caso assim… vou ler uma planilha de EXCEL, se no campo estiver vazio… blz… coloca o 0 = NENHUM… mas eu queria validar de no caso tenha algo no campo da planilha, mas que esteja divergente dos itens do ENUM… ai colocaria um outro código…

Queria saber se daria para verificar isso… se tem algo divergente no campo com o ENUM… pois o vazio eu já listei… só que ele está listando vazio sempre que não acha no ENUM

Pensei em algo como colocar uma condição no for e tal… mas não estou conseguindo… ai setaria o código para um qualquer e na verificação da minha classe eu barraria essa entrada loganod um erro…

Nada? nenhuma gambiarrazinha??

Consegui…

Criei o enum DIVERGENTE(150, “150”); – Que representa o código de erro…

E na verificação do enum eu verifico se ele é diferente de vazio…

[code]
public static ValoresPlanilhaEnum obterValorPorDesc(String desc) {
ValoresPlanilhaEnum valoresPlanilhaEnum = NENHUM;

	for (ValoresPlanilhaEnum valores : ValoresPlanilhaEnum.values()) {
		if (desc != null && valores.getDescricao().equals(desc)) {
			valoresPlanilhaEnum = valores;
		}
		else 
		if (!(desc.isEmpty()) && valoresPlanilhaEnum == NENHUM){
			valoresPlanilhaEnum = DIVERGENTE;
		}
	}

	return valoresPlanilhaEnum;
}[/code]