Classe ENUM

5 respostas
A

Boa tarde galera!!!
Eu já dei uma pesquisada na web, mas ainda nao consegui resolver o meu problema.
Eu gostaria de começar do zero pra entender primeiro do que se trata, mas do ponto de vista de voces.

Primeiro, o que é a classe Enum?
Segundo, eu estou implementando uma classe enum, onde eu tenho 3 descriçoes e passo estes valores entre parenteses, afim de que seja ele o retornado no momento da gravação no banco. Contudo o que eu consigo é a gravaçao de uma espécie de indice. Exemplo, os meus valores a serem gravados respectivamente são 4, 5 e 6, no entanto é gravado no banco 0, 1 e 2.

Abaixo segue a minha implementação:

public enum TipoBoletim {

	Interno{   
		public int getTipoBoletim(){   
			return 4;   
		}   
	},   
	Especial{   
		public int getTipoBoletim(){   
			return 5;   
		}   
	}, Reservado{   
		public int getTipoBoletim(){   
			return 6;   
		}   
	};
	
	public abstract int getTipoBoletim();

}

5 Respostas

P

um exemplo lá vai :::

public enum ObjectState implements State<String> {

	ACTIVE(0),
	RECYCLED(1),
	UNKNOWN(2);
	
	private final int number;
	private ObjectState(int number) {this.number = number;}
	public int number() {return number;}

	public static ObjectState valueOf(int id) {
        switch (id) {
            case 0: return ACTIVE;
            case 1: return RECYCLED;
            default: return UNKNOWN;
        }
    }

	
	public static String getState(int id, Locale locale) {
		if(locale.getCountry().equalsIgnoreCase("BR")) {
	        switch (id) {
		        case 0: return new String("ativo");
		        case 1: return new String("reciclado");
		        default: return new String("inativo");
	        }
		} else {
	        switch (id) {
		        case 0: return new String("active");
		        case 1: return new String("recycled");
		        default: return new String("unknown");
	        }
		}
	}
	
	public final HashMap<Integer,String> getStateList() {
		
		HashMap<Integer,String> ret = new HashMap<Integer,String>();
		
		ret.put(0, "Ativo");
		ret.put(1, "Reciclado");
		ret.put(2, "Desconhecido");
		
		return ret;
	}
	
	public StateType getStateType() {
		
		return StateType.OBJECT;
	}	
}
----
public interface State<T> {
	public int number();
	public HashMap<Integer,String> getStateList();
	public StateType getStateType();
}
Pedrosa

Tente Assim:

public enum TipoBoletim {
	INTERNO(4),
	ESPECIAL(5),
	RESERVADO(6);
	private final int valor;

	TipoBoletim(int valor) {
		this.valor = valor;
	}

	public int getValor() {
		return valor;
	}

}

E para usar:

TipoBoletim.INTERNO.getValor();

Mais informações nesse tutorial:

T

A classe java.lang.Enum é a classe a partir da qual todas as enums são derivadas. (Como você deve saber, tudo em Java é uma classe ou uma interface; enums são um caso particular de classes, que têm apenas um número limitado de instâncias estáticas.)
Uma declaração

public enum Teste {
}

seria mais ou menos equivalente a:

public final class Teste extends java.lang.Enum {
}

Eu digo “mais ou menos” porque na prática você não pode fazer isso (declarar uma enum usando uma “public final class”. )
Na verdade, você pode usar o javadoc de java.lang.Enum para saber quais são os métodos que são predefinidos em todas as enums.

A

Paribe, obrigado! Sua implementação está muito completa e eu entendi bem como funciona.

Pedrosa, obrigado, a sua implementação foi o que eu exatamente utilizei e deu certo. No meu caso eu só precisava do código que passei ref. à string, pois caso eu tivesse precisado da string propriamente dita, o exemplo do Paribe seria o mais indicado pra mim, mais uma vez obrigado!

Thingol, muito obrigado, pela aulinha “0800”! Vou olhar o javaDoc da Enum como você sugeriu.

Mais uma vez, obrigado à todos!

Marky.Vasconcelos

Sobre o banco.

O caso é que lá aparecem 0, 1 e 2 por que são os valores ordinal do enum.

Criado 6 de abril de 2009
Ultima resposta 7 de abr. de 2009
Respostas 5
Participantes 5