परिदृश्य:
मैं मानक डेक में सभी बजाने वाले कार्ड युक्त एक enum रखना चाहता हूं। इस उदाहरण के लिए जोकरों को अनदेखा करें।लूप
लेखन
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);
}
}
}
मैं एक वर्ग सूट और चेहरे क्षेत्रों, जहां सूट और चेहरे खुद को enums हैं युक्त के रूप में कार्ड को परिभाषित करने पर विचार किया है की तरह कुछ करने के लिए सक्षम होने के लिए करना चाहते हैं। हालांकि अन्य परिदृश्यों में (जैसे कि जूतों के पास लाल और काले सूट होते हैं) इससे अमान्य कार्ड ऑब्जेक्ट्स बनने की अनुमति मिलती है (यानी हीरे का जोकर, या लाल 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.
शायद एक 'enum' आप जो चाहते हैं वह नहीं है। क्या आपको वास्तव में क्लबों के 3 क्लबों को CLUBS_3 के रूप में संदर्भित करने की आवश्यकता है? – Paul
हां, बिल्कुल - निजी कन्स्ट्रक्टर, एसयूआईटी और फेस के लिए अलग-अलग enums। –