Kịch bản:
Tôi muốn có một enum chứa tất cả các thẻ bài trong một tầng chuẩn. Ví dụ này bỏ qua những câu nói đùa.Liệt kê enum-instances với vòng
Viết
enum Cards {
SPADE_1(0, 1),
SPADE_2(0, 2),
etc.
cảm thấy sai.
Tôi muốn để có thể làm điều gì đó như thế này
enum Card {
for (int suit=0; suit<4; suit++) {
for (int face=1; face<13; face++) {
new Card(suit, face);
}
}
}
tôi đã xem xét xác định thẻ như là một lớp chứa phù hợp với khuôn mặt và lĩnh vực, nơi phù hợp và khuôn mặt là bản thân sự đếm. Tuy nhiên, trong các tình huống khác (chẳng hạn như joker có bộ quần áo màu đỏ và đen), điều này sẽ cho phép tạo ra các đối tượng thẻ không hợp lệ (ví dụ: joker kim cương hoặc 10 màu đỏ).
Tự trả lời:
Dường như tôi không có đủ đại diện để đăng câu trả lời cho câu hỏi của riêng tôi.
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.
Có lẽ một 'enum' không phải là thứ bạn muốn. Bạn có thực sự cần phải tham khảo 3 câu lạc bộ như CLUBS_3 không? – Paul
Có, hoàn toàn - xây dựng tư nhân, enums riêng biệt cho SUIT và FACE. –