Dúvida enum

3 respostas
Marques

Lista,

Tenho a classe enum abaixo que funfa perfeitamente, porém surgiu a necessidade de substituir A_VISTA por A VISTA (com espaço).
Alguma dica?

Muito obrigado,

Marques

public enum TipoPagamento {
	A_VISTA(1), FATURADO(2);

	private final int id;

	TipoPagamento(int id) {
		this.id = id;
	}

	public int getId() {
		return id;
	}

	public static TipoPagamento getInstance(int id) {
		switch (id) {
		case 1:
			return A_VISTA;
		case 2:
			return FATURADO;		
		default:
			throw new IllegalArgumentException("Enum inexistente (" + id + ")");
		}
	}
}

3 Respostas

ViniGodoy

Sobrescreva o método toString do seu enum.
No código, não tem como fazer.

public enum TipoPagamento {
   A_VISTA(1, "À vista"), FATURADO(2, "Faturado");

   private final int id;
   private final String description;

   TipoPagamento(int id, String description) {
      this.id = id;
      this.description = description;
   }

   public int getId() {
      return id;
   }

   public static TipoPagamento getInstance(int id) {
      for (TipoPagamento tp : TipoPagamento.values()) {
         if (tp.getId() == id) {
            return tp;
         }
      }
 
      throw new IllegalArgumentException("Enum inexistente (" + id + ")");
   }

   @Override
   public String toString() { 
      return description; 
   }
}
ViniGodoy

Ps: Alterei o getInstance() ali em cima para uma forma que é preferível ao switch. Note que do jeito que eu deixei, vc não precisará dar manutenção no método getInstance quando um novo elemento for adicionado ou removido.

Marques

Vlw ViniGodoy!!!

Fica bem melhor assim!!!

Criado 9 de outubro de 2008
Ultima resposta 9 de out. de 2008
Respostas 3
Participantes 2