Intellij में सीरियल संस्करण UID कैसे जनरेट करें


126

जब मैंने ग्रहण का उपयोग किया तो इसमें सीरियल संस्करण यूआईडी उत्पन्न करने के लिए एक अच्छी सुविधा थी।

लेकिन इंटेलीज में क्या करना है?

IntelliJ में समान सीरियल संस्करण UID कैसे चुनें या उत्पन्न करें?

और जब आप पुरानी कक्षा को संशोधित करते हैं तो क्या करें?

यदि आपने निर्दिष्ट नहीं किया है id, तो यह रनटाइम पर उत्पन्न होता है ...



@JFIB serialVersionUIDकंपाइलर द्वारा निर्दिष्ट नहीं किए जाने पर वर्ग स्थिरांक उत्पन्न होता है। निर्दिष्ट वर्ग संस्करणों के लिए आईडी को समान रखने का फायदा (और खतरा) है। यह पुराने संस्करण के ऑब्जेक्ट के साथ एक फ़ाइल है जिसे नए संस्करण के साथ पढ़ा जाएगा (डीसर्विलाइज्ड) या इसके विपरीत।
जोप एगगन

1
@JFB एक
nazar_art

जवाबों:


304

किसी भी प्लगइन्स के बिना:

आपको केवल हाइलाइट सक्षम करने की आवश्यकता है: (Idea v.2016, 2017 और 2018, पिछले संस्करणों में समान या समान सेटिंग्स हो सकती हैं)

फ़ाइल -> सेटिंग्स -> संपादक -> निरीक्षण -> जावा -> सीरियलाइजेशन मुद्दे -> सीरियलविरॉड यूआईडी के बिना सीरियल क्लास - झंडा सेट करें और 'ओके' पर क्लिक करें। (Macs के लिए, सेटिंग्स IntelliJ IDEA के तहत है -> प्राथमिकताएँ ...)

अब, यदि आपकी कक्षा लागू होती है Serializable, तो आपको हाइलाइट दिखाई देगा और alt + Enter ऑन क्लास नाम उत्पन्न करने का प्रस्ताव देगा private static final long serialVersionUID

UPD: इस सेटिंग को खोजने का एक तेज़ तरीका - आप हॉटकी Ctrl+Shift+A(क्रिया ढूंढना) का उपयोग कर सकते हैं , प्रकार Serializable class without 'serialVersionUID'- पहला है।


2
@SalilJunior वास्तव में नहीं। निर्मित में एक serialVersionUID उत्पन्न करने की क्षमता निरीक्षण चेतावनी के लिए बंधी है। जब आप निरीक्षण चेतावनी को सक्षम नहीं करना चाहते हैं, लेकिन आप कुछ मामलों में serialVersionUID उत्पन्न नहीं करना चाहते हैं तो आप फंस गए हैं।
फेबियन बार्नी

यह समाधान मेरे लिए काम नहीं करता है, मैं केवल विकल्प देख सकता हूं: पार्सलेबल कार्यान्वयन को हटा दें, पार्सलेबल कार्यान्वयन को प्रतिस्थापित कर सकते हैं, परीक्षण बना सकते हैं, उपवर्ग बना सकते हैं और पैकेज-निजी बना सकते हैं। मैं जिस कक्षा का उपयोग कर रहा हूं वह एक ही समय में पार्सेबल और सीरियल को लागू कर रहा है। कोई उपाय?
गॉनर

क्या आपने चेक किया है कि झंडा ऊपर की सेटिंग में सेट है? V16 और v17 दोनों विचारों में परीक्षण किया गया, ठीक काम करता है। सेटिंग्स विंडो में (दाईं ओर) उस पर क्लिक करने के बाद इस तरह के निरीक्षण के लिए अतिरिक्त सेटिंग्स की जांच करें।
सेरही मकसिमचुक

मैं यह नहीं जानता था और बहुत मददगार था।
चाकलादेर असफाक आरवी

62

सबसे आसान तरीका: Alt+ Enterपर

private static final long serialVersionUID = ;

IntelliJ के बाद अंतरिक्ष को रेखांकित करेगा =। उस पर अपना कर्सर रखें और alt+ Enter( Option+ Enterमैक पर) को हिट करें । आपको एक पॉपओवर मिलेगा जो कहता है "बेतरतीब ढंग से धारावाहिक बदलें यूआईडी प्रारंभिक"। बस हिट दर्ज करें, और यह उस स्थान को एक यादृच्छिक लंबे समय के साथ आबाद करेगा।


धन्यवाद मेरे लिए IntelliJ IDEA कम्युनिटी एडिशन संस्करण 2018.3.3
तरुण

यह जावा डॉक्स में भी सलाह दी जाती है कि जहां संभव हो, निजी संशोधक का उपयोग करें। docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/…
Ilya Lozinsky

2
ऊपर वाले का बेहतर जवाब।
अकिन ओकेगबेल

32

GenerateSerialVersionUID प्लगइन स्थापित करें


2
क्यों एक प्लगइन स्थापित करें जब यह आसानी से किया जा सकता है जैसा कि नीचे @Serhii द्वारा दिखाया गया है।
शेज

2
@ शहज़ादा मुझे पसंद है जब वह निरीक्षण अक्षम हो जाता है, लेकिन कुछ वर्गों के लिए स्पष्ट सीरियलव्यूडयूआईडी प्राप्त करना आवश्यक है। मैं प्रत्येक वर्ग पर विचलित करने वाला निरीक्षण नहीं करना चाहता, जबकि मुझे केवल एक के लिए serialVersionUID की आवश्यकता है।
टिमोफे

1
मुझे लगता है कि प्लगइन उपवर्गों के लिए मान उत्पन्न करने में मदद करता है जहां मूल वर्ग भी क्रमबद्ध है और इसमें ए शामिल है serialVersionUID। यह उस मामले का ध्यान रखता है जब आपने बच्चे की कक्षा को अपडेट किया है और माता-पिता वर्ग के क्रम में बदलाव के बिना इस वर्ग के लिए एक नया सीरियलवर्जन तैयार करने की आवश्यकता है (उन मामलों में जहां मूल वर्ग में कोई परिवर्तन नहीं किया गया था)।
kapad

हालांकि यह प्रश्न का उत्तर दे सकता है, लेकिन यहां वास्तविक जानकारी प्रदान करना बेहतर है न कि केवल एक लिंक। लिंक-ओनली उत्तरों को अच्छे उत्तर नहीं माना जाता है और संभवतः हटा दिया जाएगा
elixenide

3
@EdCottrell उपलब्ध कराने के लिए कोई अन्य जानकारी नहीं है। या तो प्लगइन का उपयोग करें या नहीं।
मेओ

2

IntelliJ IDEA प्लगइन्स / GenerateSerialVersionUID https://plugins.jetbrains.com/plugin/?idea&id=185

बहुत अच्छा, स्थापित करने के लिए बहुत आसान है। आप प्लगइन्स मेनू से इंस्टॉल कर सकते हैं, डिस्क से इंस्टॉल का चयन कर सकते हैं, उस जार फ़ाइल का चयन करें जिसे आपने लिबरल फ़ोल्डर में अनपैक किया है। पुनः आरंभ, नियंत्रण + इन्स, और यह मेनू से धारावाहिक UID उत्पन्न करने के लिए पॉप अप करता है। इसे प्यार करना। :-)


0

कोड संपादक में, वह वर्ग खोलें जिसके लिए आप UID बनाना चाहते हैं, राइट क्लिक करें -> Generate -> SerialVersionUID। काम करने के लिए आपको GenerateSerialVersionUID प्लगइन स्थापित करने की आवश्यकता हो सकती है।


1
आपको कैसे लगता है कि आपका जवाब इस समस्या को हल करने के लिए कुछ नया जोड़ता है? यदि उत्तर नहीं है, तो बस अपना उत्तर समाप्त कर दें, क्योंकि यह बेकार है।
nazar_art 19

प्लगइन जोड़ने के बाद, कुछ इस बात पर भ्रमित हो सकते हैं कि वास्तव में UID कैसे उत्पन्न होता है। जो जोड़ा जाता है।
mykey

1
मुझे लगता है कि वे उस प्लगइन के लिए मैन पेज पढ़ सकते हैं। आपका उत्तर स्पष्ट है।
nazar_art
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.