मैं जावा कोड लिख रहा हूं जो JSON क्रमबद्धता के लिए Jackson का उपयोग करता है। एक टिप्पणी है कि मैं एक से पहले अपने वर्गों का उपयोग करना चाहिए आदेश में इस वर्ग की एक वस्तु क्रमांकन के लिए अद्वितीय पहचानकर्ता देने के लिए @JsonTypeName(/*Insert string here*/)
है। मेरे वर्तमान कोड में, हम किसी अन्य वर्ग से वैश्विक स्थिरता का उपयोग कर स्ट्रिंग तर्क सेट करते हैं। उदाहरण:जावा एनोट को एनोटेशन के लिए स्ट्रिंग तर्क के रूप में उपयोग करने में असमर्थता (उदा: जैक्सन)
public class AnnotationValues {
private static final String id1 = "1";
private static final String id2 = "2";
private static final String id3 = "3";
// And so on...
}
इस वर्ग का उपयोग करना, हमारे एनोटेशन @JsonTypeName(AnnotationValues.id1)
कैसा दिखेगा। मैं व्यक्तिगत रूप से नहीं सोचता कि यह वैश्विक स्ट्रिंग स्थिरांक की एक कक्षा का उपयोग करने के लिए एक बहुत ही मजबूत कोडिंग शैली है। एक बार मेरे आवेदन को जेएसओएन संदेशों की एक बड़ी मात्रा को संभालने की आवश्यकता होने के बाद यह परेशान हो जाएगा और इस प्रकार कई अलग-अलग पहचानकर्ताओं की आवश्यकता होती है। मैं स्वाभाविक रूप से enum
का उपयोग कर, इस समस्या को हल कर दूंगा। मैं के साथ वर्ग की जगह लेंगे:
public enum AnnotationValues {
ID1("1"),
STATS_RESPONSE("2"),
SESSION_RESPONSE("3"),
/* Add more... */;
public final String value;
private AnnotationValues(String value) {
this.value = value;
}
}
इस enum का उपयोग करना, मैं @JsonTypeName(AnnotationsValues.ID1.value)
मेरी टिप्पणी के रूप में लिखना चाहते हैं। लेकिन यह काम नहीं करता है। मैं इस त्रुटि संदेश मिलता है: "एनोटेशन विशेषता JsonTypeName.value के लिए मूल्य एक निरंतर अभिव्यक्ति होना चाहिए"। एक साधारण Google/SOF खोज मुझे this SOF post पर ले जाती है मुझे बता रही है कि यह एक त्रुटि क्यों थी; एक एनोटेशन पैरामीटर के लिए एक स्ट्रिंग मान स्थिर होना चाहिए। बहुत परेशान है कि मैं enum
का उपयोग नहीं कर सकता।
क्या कोई और इस समस्या में भाग लेता है? इस प्रकार की समस्या के लिए स्वीकार्य समाधान क्या है? क्या मुझे वास्तव में मेरी टिप्पणियों के लिए स्ट्रिंग स्थिरांक की एक लंबी सूची का उपयोग करना चाहिए? क्या मैं अपने एनम का उपयोग करके बचा सकता हूं? और कुछ?
क्षमा करें, लेकिन यह कैसे उस पोस्ट आप उद्धरण का डुप्लिकेट _not_ है? http://stackoverflow.com/questions/3271659/use-enum-type-as-value-parameter-for-rolesallowed-annotation – Gray