Enum

11 respostas
bsl.lacerda

Hi!
Pessoal, criei um enum com os meses do ano.

public enum MonthName {
	
	JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, 
	JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
}

Eu quero que, dependendo do enum que eu estiver utilizando eu possa obter além da string que ele representa, um valo atrelado a ele.

Tipo, JANUARY, atrelar a ele o valor numérico 1.

Entenderam?

11 Respostas

wbdsjunior
Bruno Lacerda:
Hi! Pessoal, criei um enum com os meses do ano.
public enum MonthName {
	
	JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, 
	JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
}

Eu quero que, dependendo do enum que eu estiver utilizando eu possa obter além da string que ele representa, um valo atrelado a ele.

Tipo, JANUARY, atrelar a ele o valor numérico 1.

Entenderam?

você pode fazer isso de duas formas:

sobrescrevendo o método toString do enum ou criando atributos dentro do enum:

public enum MonthName {   
    JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6),   
    JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10), NOVEMBER(11), DECEMBER(12);

    private int valor;

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

    public int getValor() {
        return valor;
    }
}
não testei, mas acho que é mais ou menos por aí.

abraço

davidtiagoconceicao

Utilize atributos no enum.
Um exemplo criando um atributo para o número do mês:

public class TestEnum {
	enum MonthName {
		JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6), JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10), NOVEMBER(11), DECEMBER(12); //o número depois do valor representa o parâmtro passado para o contrutor 

		int monthNumber;  // Atributo que irá guardar o número do mês

		MonthName(int number) {   // Construtor
			monthNumber = number;
		}

		int getMonthNumber() {  // getter do atributo
			return monthNumber;
		}
	}

	public static void main(String[] args) {
		MonthName names[] = MonthName.values();
		for (MonthName month : names) {
			System.out.println(month.getMonthNumber());
		}
	}
}
davidtiagoconceicao

Ocorreu um erro e pensei que não havia enviado a mensagem anterior…

Marky.Vasconcelos

Voce pode fazer isso também.

public enum MonthName {
	
	JANUARY{
public int getMonthValue(){
return 1;
}
},
 FEBRUARY{
public int getMonthValue(){
return 2;
}
}, MARCH{
public int getMonthValue(){
return 3;
}
}, APRIL
{
public int getMonthValue(){
return 4;
}
}, MAY
{
public int getMonthValue(){
return 5;
}
}, JUNE
{
public int getMonthValue(){
return 6;
}
};//Fiz  até junho mas é  continuar

public abstract int getMonthValue();
}

Depois voce pode ter por exemplo

System.out.println(MonthName.JANUARY.getMonthValue());

Que vai mostrar 1 assim como voce quer.

henriquedamota

Fala ai meu.

Faz algo parecido com isso:

public enum MonthName {  
       
     JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6),   
     JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10), NOVEMBER(11), DECEMBER(12);

     private int numMes;

     MonthName(int numMes){
        this.numMes = numMes;
     }


     public int getNumMes(){
        return this.numMes;
     }
}

Abraços.

P
public enum MonthName {   
       
    JANUARY (1), 
   FEBRUARY (2), 
   MARCH (3), 
   APRIL (4), 
   MAY (5), 
   JUNE (6),   
   JULY (7), 
   AUGUST (8), 
   SEPTEMBER (9), 
   OCTOBER (10), 
   NOVEMBER (11), 
   DECEMBER (12);

   private int valor;

   private MonthName(int valor) {
      this.valor = valor;
   }

   public int getValor() {
      return valor;
   }
}
T

http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html

De qualquer maneira, se você quiser aceitar o valor numérico default (0 = JANUARY etc. ) e for preguiçoso, você pode usar [url=http://java.sun.com/javase/6/docs/api/java/lang/Enum.html#ordinal()]Enum.ordinal[url]. Exemplo:

MonthName  m = MonthName.JANUARY;
System.out.printf ("O mes de janeiro tem o ordinal %d %n", m.ordinal()); // imprime 0
bsl.lacerda

Valeu galera!!!

ceceu
davidtiagoconceicao:
Utilize atributos no enum. Um exemplo criando um atributo para o número do mês:
public class TestEnum {
	enum MonthName {
		JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6), JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10), NOVEMBER(11), DECEMBER(12); //o número depois do valor representa o parâmtro passado para o contrutor 

		int monthNumber;  // Atributo que irá guardar o número do mês

		MonthName(int number) {   // Construtor
			monthNumber = number;
		}

		int getMonthNumber() {  // getter do atributo
			return monthNumber;
		}
	}

	public static void main(String[] args) {
		MonthName names[] = MonthName.values();
		for (MonthName month : names) {
			System.out.println(month.getMonthNumber());
		}
	}
}

Amigo no seu teste está saindo:

1
2
3
4
5
6
7
8
9
10
11
12

bom, se eu quizer que saia:|

Janeiro
Fevereiro
Março
Abril
...etc

como que eu faria: ?

bsl.lacerda

Assim

public class TestaEnum {
	
	enum Mes {
		
		January("Janeiro"), February("Fevereiro"); // Faz o mesmo para o restante dos meses.
		
		public String nome;
		
		Mes(String nome){
			this.nome = nome;
		}
		
		String getNome(){
			return this.nome;
		}
	}
	
	public static void main(String[] args) {
		Mes [] meses = Mes.values();
		for ( Mes mes : meses ) {
			System.out.println(mes.getNome());
		}
	}

}
A

Se vc quiser o nome é só colocar o campo ENUM que deseja, seguindo o exemplo anterior:

public class TestaEnum {

enum MonthName {

JANUARY(1), FEBRUARY(2), MARCH(3), APRIL(4), MAY(5), JUNE(6), JULY(7), AUGUST(8), SEPTEMBER(9), OCTOBER(10), NOVEMBER(11), DECEMBER(12); //o número depois do valor representa o parâmtro passado para o contrutor
int monthNumber;  // Atributo que irá guardar o número do mês   

    MonthName(int number) {   // Construtor   
        monthNumber = number;   
    }   

    int getMonthNumber() {  // getter do atributo   
        return monthNumber;   
    }   
}   
  
public static void main(String[] args) {   
    MonthName names[] = MonthName.values();   
    for (MonthName month : names) {   
        System.out.println(month + " - " + month.getMonthNumber());   
    }   
}

}

dessa forma irá imprimir:
JANUARY - 1
FEBRUARY - 2
MARCH - 3
APRIL - 4
MAY - 5
JUNE - 6
JULY - 7
AUGUST - 8
SEPTEMBER - 9
OCTOBER - 10
NOVEMBER - 11
DECEMBER - 12

Abraço

Criado 2 de abril de 2009
Ultima resposta 11 de set. de 2009
Respostas 11
Participantes 9