मेरे पास एक वर्ग एक सामान्य विशेषता के साथ <पूर्व> क्या निम्न कार्य करने का अच्छा तरीका है? प्रेसिजन, मैं जीएसओन को deserializer के रूप में प्रयोग कर रहा हूं, एक सूची प्राप्त करने के लिए, प्रत्येक डेटा ऑब्जेक्ट्स को उत्तराधिकारी हो सकता है या तो: संपादित करें ) D.getValue ()) java.lang.Double को java.lang.Long पर डाली नहीं जा सकता या java.lang.NumberFormatException: इनपुट स्ट्रिंग के लिए: "212231.0" मैंने एक पंजीकृत करने का प्रयास किया लोंगएडपेटर <पूर्व> java.lang.IllegalArgumentException: tsOverflow के लिए वर्ग java.lang.Long.Long edit2 के लिए प्रकार एडाप्टर को पंजीकृत नहीं किया जा सकता है: एक वर्ग की अनुमति देने के लिए जेनरिक का बिंदु नहीं है एक ही समय में विभिन्न प्रकारों का उपयोग करने के लिए। जेनरिक्स आपको किसी वस्तु के उदाहरण द्वारा प्रयुक्त प्रकार परिभाषित / प्रतिबंधित करने की अनुमति देता है। जेनेरिक के पीछे का विचार डालने की आवश्यकता को समाप्त करना है। अपनी कक्षा के साथ जेनेरिक का उपयोग करना कुछ इस तरह का होना चाहिए: आपको या तो ऑब्जेक्ट का उपयोग करना चाहिए और कास्टिंग - OR - कास्टिंग से बचने के लिए जेनेरिक का उपयोग करें। आपको लगता है कि जेनेरिक एक ही उदाहरण के भीतर विषम टाइपिंग की अनुमति देते हैं। यह सही नहीं है। यदि आप किसी प्रकार की एक मिश्रित बैग रखने की सूची चाहते हैं, तो जेनेरिक उपयुक्त नहीं हैं। इसके अलावा। .. एक डबल से अधिक बनाने के लिए, उपयोग करें। एक फ्लोट को डबल से बनाने के लिए, उपयोग करें। मैं पढ़ने की सलाह देता हूं। डेटा & lt; T & gt;
निजी टी मान;
यानी विभिन्न प्रकारों में सामान्य प्रकार लौट रहे हैं?
सार्वजनिक सूची & lt; स्ट्रिंग & gt; GetValues () {यदि (value.getClass ()! = ArrayList.class) नया अपवाद फेंक ("गलत Enum मान '% s'", मान); वापसी (ArrayList & lt; स्ट्रिंग & gt;) मान; // बदसूरत} सार्वजनिक स्ट्रिंग getStringValue () {if (value.getClass ()! = String.class) नया अपवाद फेंक ("गलत मान प्रकार '% s'", मान); वापसी (स्ट्रिंग) मान; // बदसूरत} सार्वजनिक फ्लोट प्राप्त करें फ्लाइट वैल्यू () (यदि (value.getClass ()! = Double.class) नया अपवाद फेंक ("गलत मान प्रकार '% s'", मान); वापसी (फ्लोट) मान; // बदसूरत} सार्वजनिक लांग लांग वैल्यू () {यदि (value.getClass ()! = Double.class) नया अपवाद फेंक ("गलत मान प्रकार '% s'", मान); वापसी (लंबे) मूल्य; // बदसूरत} सार्वजनिक टी getValue () {वापसी मूल्य; }
फ्लोट और लंबे डिटेक्शन के लिए एडेप्टर भी पंजीकृत कर सकते हैं, लेकिन यह
((लांग)
लांग.पर्सलॉन्ग (डी.जी.वैल्यू) (to.String ())
जीनसबिल्डर। रजिस्ट्री टाइप एडेप्टर (लांग। क्लास, नया लोंगएडैप्टर ()); प्राइवेट स्टैटिक क्लास लोंगएडैप्टर JsonSerializer को लागू करता है & lt; लोंग & gt ;, जेसनडेसेराइलाइजर & lt; लोंग & gt; {@ ओवरराइड पब्लिक लॉंग डीर्सियलिज़ेज़ (जेसनईलेमेंट जेसन, टाइप टाइप, जेसनडेसियालाइजेशन कॉन्टैक्ट अरग 2) JsonParseException फेंकता {return json.getAsLong (); } @ ओवरराइड सार्वजनिक जेएसनएलिमेंट सीरियललाइज (लांग एल, टाइप एजी 1, जेसनसियरीलाइजेशन कॉन्टैक्ट अरज 2) {नया जेसन प्रिमिटिव (नया डबल (एल)); }}
डेटा & lt; float & gt; डी 1 = नया डेटा & lt; फ्लोट & gt; (नया फ़्लोट (6.32)); सूची के & lt; स्ट्रिंग & gt; एल = नया अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); l.add ( "fr"); l.add ( "यह"); l.add ( "एन"); डाटा को & lt; सूची से & lt; स्ट्रिंग & gt; & gt; D2 = नया डेटा & lt; सूची & lt; स्ट्रिंग & gt; & gt; (एल); डाटा को & lt; लांग & gt; डी 3 = नया डेटा & lt; लोंग & gt; (नया लांग (212231)); सूची के & lt; डाटा & gt; डेटा = नया अर्रेलिस्ट & lt; डेटा & gt; (); data.add (डी 1); data.add (डी 2); Data.add (d3) नया जीएसएन ()। टोजसन (डेटा);
डेटा & lt; स्ट्रिंग & gt; स्ट्रिंगडाटा = नया डेटा & lt; स्ट्रिंग & gt; (); स्ट्रिंग someString = stringData.getValue (); डाटा को & lt; लांग & gt; लंबीडेटा = नया डेटा & lt; लांग & gt; (); लांग कुछ लांग = लम्बाईडेटा.गेट वैल्यू (); डाटा को & lt; सूची से & lt; स्ट्रिंग & gt; & gt; सूची डेटा = नया डेटा & lt; सूची & lt; स्ट्रिंग & gt; & gt; (); सूची के & lt; स्ट्रिंग & gt; SomeList = listData.getValue ();
Comments
Post a Comment