Enumeration valueOf

3 respostas
PcAbrantes

Ola, eu to com uma duvida com enumeration… eu tenho a seguinte enum:

public enum SituacaoDebitoRetorno {

	DEBITO_EM_ABERTO(1), DEBITO_DIVIDA_ATIVA(7), DEBITO_REPRESENTADO(19), 
	DEBITO_CANCELADO(39), DEBITO_QUITADO_IPVA(41), DEBITO_PARCELADO_IPVA(42),
	DEBITO_PARCELADO_DIA_IPVA(43), 	DEBITO_PARCELADO_EM_ATARASO(44), 
	DEBITO_BLOQUEIO_PARCELAMENTO(45);
	
	private Integer tipoSituacao;

	SituacaoDebitoRetorno(Integer tipoSituacao) {
		
		this.tipoSituacao = tipoSituacao;
	}
	
	public int getTipoSituacao() {
		
		return this.tipoSituacao;
	}
}

eu gostaria de saber se tem como utilizar o metodo valueOf passando como parametro o tipoSituacao

vlw

3 Respostas

_fs
Você pode implementar um método "fromTipo" que faz isso para você na própria enum. Por exemplo:
public static SituacaoDebitoRetorno fromTipo(int tipo) {
	for (SituacaoDebitoRetorno s : values())
		if(s.tipoSituacao == tipo)
			return s;

	return null;
}
victorwss

É melhor usar uma cache neste método para evitar uma busca sequencial. Dá para fazer assim:

class Mapeamento {
    static final Map<Integer, SituacaoDebitoRetorno> fromValue =
        Collections.synchronizedMap(new HashMap<Integer, SituacaoDebitoRetorno>());
}
public enum SituacaoDebitoRetorno {

    DEBITO_EM_ABERTO(1), DEBITO_DIVIDA_ATIVA(7), DEBITO_REPRESENTADO(19), 
    DEBITO_CANCELADO(39), DEBITO_QUITADO_IPVA(41), DEBITO_PARCELADO_IPVA(42),
    DEBITO_PARCELADO_DIA_IPVA(43), DEBITO_PARCELADO_EM_ATARASO(44), 
    DEBITO_BLOQUEIO_PARCELAMENTO(45);
	
    private int tipoSituacao; // int, não Integer!

    private SituacaoDebitoRetorno(int tipoSituacao) {
        this.tipoSituacao = tipoSituacao;
        Mapeamento.fromValue.put(tipoSituacao, this);
    }

    public int getTipoSituacao() {
        return this.tipoSituacao;
    }

    public static SituacaoDebitoRetorno valueOf(int tipoSituacao) {
        return Mapeamento.fromValue.get(tipoSituacao);
    }
}
PcAbrantes

vlw galera

Criado 30 de junho de 2008
Ultima resposta 30 de jun. de 2008
Respostas 3
Participantes 3