galera… eu nunca tinha visto essa sintaxe:
static {
for (Suit suit : Suit.values())
for (Rank rank : Rank.values())
protoDeck.add(new Card(rank, suit));
}
eis o contexto:
import java.util.*;
public class Card {
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 Card(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<Card> protoDeck = new ArrayList<Card>();
// Initialize prototype deck
static {
for (Suit suit : Suit.values())
for (Rank rank : Rank.values())
protoDeck.add(new Card(rank, suit));
}
public static ArrayList<Card> newDeck() {
return new ArrayList<Card>(protoDeck); // Return copy of prototype deck
}
}
tirado daqui
do que se trata???
[]'s
Em português:
para cada suit na enum Suit {
para cada rank na enum Rank {
protoDeck.add (new Card (rank, suit));
}
}}
Seria mais ou menos equivalente a: (se você pudesse incrementar uma enum: - o que vou escrever não é Java válido)
for (Suit suit = CLUBS; suit <= SPADES; ++suit) {
for (Rank rank = DEUCE; rank <= ACE; ++rank) {
...
thingol, me perdoe… não fui muito claro na pergunta… :lol:
minha dúvida é com relação à esse static sozinho, aí :
static {
}
como é que quando isso ocorre:
return new ArrayList<Card>(protoDeck);
ele sabe que tem que entrar no loop?
[]'s
Você usa o “static” sozinho quando quer inicializar membros estáticos de sua classe, e precisa de algo mais complicado que uma simples expressão. Por exemplo, você precisasse fazer uma inicialização que requer um “try/catch” ou um loop.
O exemplo a seguir dá o caso mais simples.
class Teste {
static int x = 10; // declarei e inicializei a variável estática
}
é a mesma coisa que isto (o compilador gera os mesmos bytecodes):
class Teste {
static int x; // note que não atribuí valor nenhum ainda!
static {
x = 10; // agora é que inicializamos a variável estática
}
}
1 curtida
Ahhhhhhhhhhhhhh tahhhhh… 
agora ficou claro… nossa… dessa eu não sabia… isso sempre existiu? :XD:
obrigado!
:thumbup:
Isso é coisa do Java 1.0.
caraca!!! :mrgreen:
nunca tinha visto isso antes… de mais de 2 anos que conheço Java
mais uma vez obrigado!