কীভাবে ইনটেলিজে সিরিয়াল সংস্করণ ইউআইডি উত্পন্ন করা যায়


126

আমি যখন Eclipse ব্যবহার করতাম তখন সিরিয়াল সংস্করণ ইউআইডি উত্পন্ন করার জন্য এটির একটি দুর্দান্ত বৈশিষ্ট্য ছিল।

তবে ইনটেলিজজে কী করব?

ইন্টেলিজজে কীভাবে অভিন্ন সিরিয়াল সংস্করণ ইউআইডি বাছাই বা উত্পন্ন করা যায়?

এবং আপনি পুরানো ক্লাসটি সংশোধন করার সময় কী করবেন?

যদি আপনি idএটি নির্দিষ্ট না করে থাকেন তবে এটি রানটাইমে উত্পন্ন হয় ...



@ জেফআইবি ক্লাস ধ্রুবকটি serialVersionUIDনির্দিষ্ট না করা অবস্থায় সংকলক দ্বারা উত্পাদিত হয়। পরিবর্তিত শ্রেণীর সংস্করণগুলির জন্য আইডিটিকে একরকম রাখার সুবিধা (এবং বিপদ) নির্দিষ্ট করে। এটি পুরানো সংস্করণের কোনও অবজেক্টযুক্ত একটি ফাইল নতুন সংস্করণ বা তদ্বিপরীত সহ পঠন করা হবে (deserialized)।
জোপ এগেন

উত্তর:


304

কোনও প্লাগইন ছাড়াই:

আপনাকে কেবল হাইলাইট সক্ষম করতে হবে: (আইডিয়া v.2016, 2017 এবং 2018, পূর্ববর্তী সংস্করণগুলিতে একই বা অনুরূপ সেটিংস থাকতে পারে)

ফাইল -> সেটিংস -> সম্পাদক -> পরিদর্শন -> জাভা -> সিরিয়ালাইজেশন সমস্যা -> 'সিরিয়াল ভার্সনিউডিউড' ছাড়াই সিরিয়ালযোগ্য ক্লাস - পতাকা সেট করুন এবং 'ওকে' ক্লিক করুন। (ম্যাকের জন্য, সেটিংস ইন্টেলিজ আইডিইএ -> পছন্দসমূহ ... এর অধীনে রয়েছে)

এখন, যদি আপনার শ্রেণি প্রয়োগ করে Serializable, আপনি হাইলাইট দেখতে পাবেন এবং শ্রেণীর নামতে Alt + প্রবেশ উত্পন্ন করার প্রস্তাব দেবে private static final long serialVersionUID

ইউপিডি: এই সেটিংটি খুঁজে পাওয়ার দ্রুততর উপায় - আপনি হটকি ব্যবহার করতে পারেন Ctrl+Shift+A(ক্রিয়া সন্ধান করুন), টাইপ করুন Serializable class without 'serialVersionUID'- প্রথমটি এটি।


2
পছন্দ করেছেন একটি সিরিয়াল তৈরির ক্ষমতা অন্তর্নির্মিত পরিদর্শন পরিদর্শন সতর্কতার সাথে আবদ্ধ। যখন আপনি পরিদর্শন সতর্কতাটি সক্ষম করতে না চান তবে কিছু ক্ষেত্রে সিরিয়াল ভার্সনইউডিউ উত্পন্ন করেন আপনি আটকে গেছেন।
ফ্যাবিয়ান বার্নে

এই সমাধানটি আমার পক্ষে কার্যকর নয়, আমি কেবলমাত্র বিকল্পগুলি দেখতে পাচ্ছি: পার্সলেবল বাস্তবায়ন সরিয়ে ফেলুন, পার্সলেবল বাস্তবায়ন প্রতিস্থাপন করুন, পরীক্ষা তৈরি করুন, সাবক্লাস তৈরি করুন এবং প্যাকেজ-ব্যক্তিগত তৈরি করুন। আমি যে ক্লাসটি ব্যবহার করছি তা একই সাথে পার্সেবল এবং সিরিয়ালাইজেবল প্রয়োগ করে। কোন ধারণা?
গনভার

উপরের সেটিংসে আপনি প্রয়োজনীয় পতাকাটি সেট করেছেন কিনা তা পরীক্ষা করেছেন? ভি 16 এবং ভি 17 উভয় ধারণাতে পরীক্ষিত, দুর্দান্ত কাজ করে। সেটিংস উইন্ডোতে (ডানদিকে) ক্লিক করার পরে এ জাতীয় পরিদর্শনের জন্য অতিরিক্ত সেটিংসও পরীক্ষা করে দেখুন।
সেরিহি ম্যাকসিমচুক

আমি এটি জানতাম না এবং খুব সহায়ক বলে মনে করি।
চাকলাদার আসফাক আরেফে

62

সবচেয়ে সহজ পদ্ধতি: Alt+ Enterচালু

private static final long serialVersionUID = ;

ইন্টেলিজ-এর পরে স্পেসটিকে আন্ডারলাইন করবে =। এটিতে আপনার কার্সারটি চাপুন এবং alt+ Enter( Option+ Enterম্যাকে) টিপুন । আপনি এমন একটি পপওভার পাবেন যা বলছে "এলোমেলোভাবে সিরিয়ালভেরিউশনিউড ইনিশিয়ালাইজার পরিবর্তন করুন"। সবেমাত্র এন্টার টিপুন, এবং এটি এলোমেলোভাবে দীর্ঘ দিয়ে সেই জায়গাটি তৈরি করবে।


ধন্যবাদ আমার জন্য ইন্টেলিজ আইডিইএ কমিউনিটি সংস্করণ সংস্করণ 2018.3.3 এ কাজ করেছেন
তরুণ

এটি জাভা ডক্সে যেখানে সম্ভব সেখানে বেসরকারী সংশোধক ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/…
ইলিয়া লোজিনস্কি

2
উপরেরটির উত্তরের উত্তর।
আকিন ওকেগবিল

32

জেনারেটসরিয়াল ভার্সনিউডি প্লাগইন ইনস্টল করুন


2
নীচে @ সেরেই দেখানো অনুসারে যখন এটি সহজেই করা যায় তখন কেন একটি প্লাগইন ইনস্টল করবেন।
shaz

2
@ শ্যাজ আমি পছন্দ করি যখন এই পরিদর্শনটি অক্ষম থাকে তবে কয়েকটি শ্রেণীর জন্য সুস্পষ্ট সিরিয়াল ভার্সনইউইউডিটি প্রয়োজন। আমি প্রতিটি ক্লাসে বিভ্রান্তিকর পরিদর্শন চাই না যখন আমার কেবল একটির জন্য সিরিয়াল ভার্সনইউডিউ প্রয়োজন।
টিমোফায়

1
আমি মনে করি যে প্লাগইনটি সাবক্লাসের জন্য মান উত্পন্ন করতে সহায়তা করে যেখানে প্যারেন্ট ক্লাসটি সিরিয়ালাইজওযোগ্য এবং এতে একটি রয়েছে serialVersionUID। আপনি যখন শিশু শ্রেণিকে আপডেট করেছেন এবং অভিভাবক শ্রেণির সিরিয়াল ভার্সনইউইউডিউটি ​​পরিবর্তন না করেই এই শ্রেণীর জন্য একটি নতুন সিরিয়াল ভার্সনইউডিউ উত্পন্ন করার প্রয়োজন হবে তখন (ক্ষেত্রে যেখানে প্যারেন্ট ক্লাসে কোনও পরিবর্তন আনা হয়নি)।
কাপাড

যদিও এটি প্রশ্নের উত্তর দিতে পারে, এখানে কেবলমাত্র একটি লিঙ্ক নয়, প্রকৃত তথ্য সরবরাহ করা ভাল। কেবল লিঙ্ক-উত্তর উত্তম হিসাবে বিবেচিত হয় না এবং সম্ভবত মুছে ফেলা হবে
ইলেক্সেনাইড

3
@ এডকোটারেল সরবরাহ করার মতো অন্য কোনও তথ্য নেই। হয় প্লাগইন ব্যবহার করুন বা না করুন।
মেও

2

ইন্টেলিজ আইডিইএ প্লাগইন / জেনারেটসরিয়াল ভার্সনিউডিটি https://plugins.jetbrains.com/plugin/?idea&id=185

খুব সুন্দর, ইনস্টল করা খুব সহজ। আপনি এটি প্লাগইন মেনু থেকে ইনস্টল করতে পারবেন, ডিস্ক থেকে ইনস্টল করুন নির্বাচন করুন, lib ফোল্ডারে আনপ্যাক করা জার ফাইলটি নির্বাচন করুন। পুনরায় চালু করুন, নিয়ন্ত্রণ + ইন করুন এবং এটি মেনু থেকে সিরিয়াল ইউআইডি উত্পন্ন করতে পপ আপ হয়। এটা ভালবাসা। :-)


0

কোড সম্পাদক সহ, আপনি যে শ্রেণীর জন্য ইউআইডি তৈরি করতে চান তা খুলুন, -> উত্পন্ন করুন -> সিরিয়াল ভার্সনউইডিএ রাইট ক্লিক করুন। এটি কাজ করার জন্য আপনার জেনারেটরিয়াল ভার্সনউইডিএইচ প্লাগইন ইনস্টল থাকা দরকার।


1
আপনি কীভাবে মনে করেন যে এই উত্তরটি সমাধান করার জন্য আপনার উত্তর নতুন কিছু যুক্ত করে? উত্তরটি যদি না হয় তবে কেবল আপনার উত্তরটি মুছে ফেলুন, কারণ এটি অকেজো।
নাজার_আর

প্লাগইন যুক্ত করার পরে, কেউ কীভাবে আসলে ইউআইডি উত্পন্ন করতে পারে তা নিয়ে বিভ্রান্ত হতে পারে। এটিই যুক্ত হয়।
মাইকি

1
আমি অনুমান করি যে তারা সেই প্লাগইনের জন্য ম্যান পৃষ্ঠাটি পড়তে পারে। আপনার উত্তর সুস্পষ্ট।
নাজার_আর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.