quarta-feira, 26 de junho de 2013

Enum: Manuseando constantes de forma correta



Fala galera! Hoje tive um debate com um amigo sobre oque seria a classe ENUM do java e qual sua funcionalidade. Tendo isso em vista chegamos a uma conclusão sobre sua utilização e como substituiríamos nossas atuais constantes por esta forma linda de utiliza-las. Agora repasso para vocês um pouco sobre o mesmo.  

A partir da versio 5.0,Java lhe permite restringir uma variável para ter um de apenas uns poucos valores pré-definidos - em outras palavras, um valor de uma lista enumerada. (Os itens da lista enumerada sio chamados, surpreendentemente, de enums.)

O uso de enums pode ajudar a reduzir os bugs no seu código. Por exemplo, na sua aplicação de automaçãp de lanchonetes, você poderia desejar reduzir os tamanhos de cafés possiveis a BIG ("gande"), HUGE ("enorme') e OVERWHELMING ('absurdo'). Se você deixar a possibilidade que um pedido de tamanho LARGE ("grande') seja feito, isso poderia causar um erro. Entram em agdo os enums. Com a simples declatagio a seguir, vocd poderá garantir que o compilador o impedirá de atribuir qualquer coisa a um Coffeesize que nio seja BIG, HUGE ou OVERWHELMING:

enum CoffeeSize { erc, HUGE, OVERWHELMING };

Dai em diante, a única maneira de se obter um Coffeesize será com um a declaração parecida com esta:
CoffeeSize cs = CoffeeSize.BIG;

Não é obrigatório que as constantes enums estejam escritas totalmente em maiúsculas, mas, tomando emprestado da convenção de códigos da Sun que determina que as constantes tenham os seus nomes em maiúsculas.

Os componentes básicos de um enum são as suas constantes (ou seja, BIG, HUGE e OVERWHELMING), embora você verá logo adiante que pode haver muito mais em um enum. Os enums podem ser declarados como as suas próprias classes separadas, ou como membros de classes, mas não podem ser declarados dentro de um método!

Declarando um enum fora de uma classe:

enum CoffeeSize { erc, HUGE, OVERWHELMTNG I / / não pode ser
/ / private nem protect

class Coffee {
CoffeeSize size;

public class CoffeeTest {
public static void main(String[] args) {
Coffee drink = new Coffee ( ) ;
drink. size = CoffeeSize.BIG; / / enum fora da classe

O código acima pode fazer parte de um só arquivo. (Lembre-se, o arquivo deve set nomeado como CoffeeTest.java, porque esse é o nome da classe pública do arquivo.) A principal coisa a se lembrar é que o enum pode ser declarado somente como modificador public ou default,assim como uma classe não interna.Eis um exemplo de declaração de enum dentro de uma classe:

class Coffee2 {
enum Coffeesize {BIG, HUGE, OVERWHELMTNG }

CoffeeSize size;
}

public class CoffeeTest2 {
public static void main(String[] args) {
Coffee2 drink = new Coffee2() ;
drink.size = Coffee2.CoffeeSize.BIG; // incluindo classes
/ / nome requerido
}

As principais coisas a se lembrar desses exemplos são que: 

1) enums podem ser declarados como as suas próprias classes, ou podem ser incluídos em outra classe; 

2) que a sintaxe para se acessar os membros de um enum depende de onde o enum foi declarado.

O seguinte exemplo NAO é válido:

public class CoffeeTestl
public static void main(String[] args) {
enum coffeesize { BIG, HUGE, OVERWHELMTNG } // ERRADo! Nao se
/ / pode declarar enums
// em métodos
Coffee drink = new Coffee() ;
drink.size = CoffeeSize.BIG;
}

Repare como cada um dos valores enumerados, BIG, HUGE e OVERWHELMING, é uma instância do tipo CoffeeSize. EIes são representados como static e final, o que no mundo Java corresponde a uma constante.

Repare também que o valor de cada enum conhece o seu indice ou posição. Em outras palavras, a ordem na qual os enums são declarados faz diferença.Você pode pensar nos enums de CoffeeSize como fazendo parte de um array do tipo CoffeeSize.


É isso ai galera, espero que tenham gostado e até a Próxima! Por que java jatavanamente! de seu amigo Bruno Rafael.

Gostou? Curta nossa página:
https://www.facebook.com/Javanamente?bookmark_t=page

Parceiros:
Rota Urbana:https://www.facebook.com/RotaUrbana
Execute TI: http://www.executeti.com.br/
TaLegal: http://mastalegal.com.br/

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.