Сценарий:
Я хочу иметь перечисление, содержащее все игральные карты в стандартной колоде.В этом примере проигнорируйте джокеров.
Запись
enum Cards {
SPADE_1(0, 1),
SPADE_2(0, 2),
etc.
кажется неправильной.
Я бы хотел сделать что-то подобное
enum Card {
for (int suit=0; suit<4; suit++) {
for (int face=1; face<13; face++) {
new Card(suit, face);
}
}
}
Я рассмотрел определение карты как класса, содержащего поля масти и лица, где масть и лицо сами по себе являются перечислениями.Однако в других сценариях (например, джокеры с мастями красного и черного цветов) это позволило бы создать недействительные объекты карты (например, джокер с бриллиантами или красный 10).
Самоответ:
Очевидно, мне не хватает представителя, чтобы опубликовать ответ на свой вопрос.
I'm not sure if it's considered good form to answer my own question, but @Paul just gave me a brainwave.
Declare Card to have a private constructor, and use a
static Card getCard(suit, face)
method to validate combinations before returning them.