Enum, ué?

E ai pessoal… primeiro gostaria de saber pq não está funcionando esse código…

import java.util.*;
public class Enums {
	
		public enum Rank { DEUCE, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN JACK, QUEEN, KING, ACE};
		                   
		public enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES};
		
		private final Rank rank;
		private final Suit suit;
		
		private Enums(Rank rank, Suit suit){
			this.rank = rank;
			this.suit = suit;
		}
		
		public Rank rank(){	return rank; }
		public Suit suit(){	return suit; }
		
		public String toString()( return rank + " of " + suit; )
			
		private static final List<Enums> protoDeck = new ArrayList<Enums>();
		
		static {
			for (Suit suit : Suit.values())
			for (Rank rank : Rank.values())
			protoDeck.add(new Card(rank, suit));
		}
		
		public static ArrayList<Enums> newDeck() {
			return new ArrayList<Enums>(protoDeck);
		}
}

e qual é a finalidade desse bloco static ali… como q ele é chamado?? como assim static {} não entendi…

1º - Falta uma virgula entre o TEN e o JACK no enum Rank;

2º - Você deve usar {} no método toString ao invés de ();

3º - Falta alguma coisa no seu código, pois a classe Card não está definida;

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

puts q feio!!! coloquei ( ) caramba… eu to olhando…olhando… faz mó tempo e nao acho o eerro!! ehheehhe!! vlew já ta resolvido! obrigado =)

agora… pq dakele static {}, pq ta assim akele bloco?: qual é o sentido???

Não sei pra que ele serve no contexto do seu negócio, mas bloco estáticos servem para ser executados independente da instanciação de uma classe. Os blocos estáticos são executados assim que a aplicação é iniciada.

aaaah! então é como se fosse um construtor? mas que não precisa de instancia… ?

nao eh negócio rsrs eh um exemplo de enums q eu achei por aki…

Na realidade um bloco estático é executado quando a classe é carregada pela primeira vez… :wink:

[quote=Guilherme Américo]
Na realidade um bloco estático é executado quando a classe é carregada pela primeira vez… :wink:[/quote]

para cada classloader.

[quote=Paulo Silveira][quote=Guilherme Américo]
Na realidade um bloco estático é executado quando a classe é carregada pela primeira vez… :wink:[/quote]

para cada classloader. [/quote]

Hehe :smiley:

class o que?? loader? hein…? =/

sempre que a classe é carregada pela Jvm… faz um teste…
crie alguns intâncias dessa classe, e veja quantas vezes o bloco estático é chamado!