मैं जावा से एक MongoDB उदाहरण है कि एक रेल App से करने के लिए लिखा है तक पहुँचने कर रहा हूँ में MongoDB से पूर्णांक क्षेत्र पढ़ने। मैं पूर्णांक मानों को पुनर्प्राप्त कर रहा हूं जिन्हें लंबे समय तक संग्रहित किया जाना चाहिए, क्योंकि वे 32 बिट्स से अधिक हो सकते हैं।लांग प्रकार डाली त्रुटि जावा
इस कोड को संकलित कर देगा:
this.profile_uid = (Long)this.profile.get("uid");
हालांकि, मैं एक प्रकार रूपांतरण रन-टाइम त्रुटि हो रही है:
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
यह शायद क्योंकि क्षेत्र मोंगो द्वारा पूर्णांक के रूप में दिया जाता है है, लेकिन मुझे पता है कि कुछ आईडी लंबे समय तक आ सकती हैं और विभिन्न कारणों से मैं डीबी (दूसरे ऐप से) टाइप किए गए प्रकार को नहीं बदल सकता; यह कुछ मामलों में 32-बिट और दूसरों में 64-बिट हो सकता है।
जावा अनुप्रयोग या तो संभाल करने की जरूरत है, और मैं काट-छांट या अतिप्रवाह मुद्दे के कुछ प्रकार में चलाने के लिए नहीं करना चाहती। मैं जावा पक्ष पर लांग के रूप में इसे पढ़ना चाहता हूं।
मैं नीचे वैकल्पिक हल की कोशिश की है और इसे चलाने के लिए लगता है, लेकिन मैं नहीं जानता कि अगर मैं काट-छांट या अतिप्रवाह मुद्दों इस तरह से सुरक्षित है। मुझे यकीन नहीं है कि जावा में Number
कक्षा क्या है।
this.profile_uid = ((Number)this.profile.get("uid")).longValue();
इस कानूनी है? इसका क्या दुष्प्रभाव है? क्या कोई और बेहतर तरीका है?
आप दिए गए मान का उपयोग कर ** instaceof ** के प्रकार की जांच कर सकते हैं और फिर typecasting –