के माध्यम से enums के लिए कस्टम मान क्रमबद्धता प्रदान करना एक परियोजना के लिए मैं काम कर रहा हूं, हमारे पास उपयोग में बहुत सारे enums हैं। मॉडल ऑब्जेक्ट स्वयं बहुत छोटी कक्षाओं से बना है; इस मॉडल के बाद हम जेएक्सबी के माध्यम से एक्सएम के रूप में हमारे डीबी को क्रमबद्ध करते हैं। अब, हम enum में एक विशेष विधि की वापसी का उपयोग कर हमारे enum मूल्यों को क्रमबद्ध करने में सक्षम होना चाहते हैं; कि दी गई है:JAXB
public enum Qualifier {
FOO("1E", "Foo type document"),
BAR("2", "Bar object");
private String code, description;
public Qualifier(String code, String description) {
this.code = code;
this.description = description;
}
public String getCode() {
return this.code;
}
public String getDescription() {
return this.description;
}
}
आदि आदि वर्तमान में, जब एक्सएमएल के लिए धारावाहिक, हम की तरह कुछ मिलता है:
<qualifier>FOO</qualifier>
जो है कैसे JAXB यह संभालती है। हालांकि, हमें getCode() की वापसी होने के लिए मूल्य की आवश्यकता है, और हमारे बहुत सारे enums इस सम्मेलन का पालन करते हैं (कोड के माध्यम से लुकअप के लिए एक समान स्थैतिक विधि के साथ), ताकि उपर्युक्त एक्सएमएल खंड इस तरह दिखता है:
<qualifier>1E</qualifier>
इसके बजाए। हम इसे @XmlEnum
और @XmlEnumValue
के साथ एनोटेट कर सकते हैं, लेकिन यह बहुत कठिन है - कुछ enums के पास 30 अंकित मान हैं, और हाथ-संपादन यह अच्छा नहीं है। हम इसके बजाय एक कस्टम सीरियलाइज़र का उपयोग करने के बारे में भी सोच रहे हैं, लेकिन मैं अभी उस मार्ग पर जाने से बचना चाहता हूं (लेकिन अगर यह जाने का रास्ता है, तो मुझे इसके साथ कोई समस्या नहीं है)।
कोई विचार कैसे?
हम्म ... यह एक हम के लिए देख रहे तरह दिखता है। मेरी समस्या वास्तव में यह है कि यह सामान्य नहीं है (enum पर जेनेरिक का उपयोग नहीं कर सकते), लेकिन यह काम करने योग्य है।Enum मूल्यों को एनोटेट करने के बजाए प्रति एडमेटर प्रति एनम बनाना बेहतर होगा। धन्यवाद! – jmibanez