কম্পিউটারপ্রোগ্রামিং

জাভা জেনারিক্স: বর্ণনা এবং পদ্ধতি

এর শুরু থেকেই, জাভা ভাষার অনেক পরিবর্তন হয়েছে, যা নিঃসন্দেহে, তার কার্যকারিতার জন্য ইতিবাচক বৈশিষ্ট্যগুলি নিয়ে এসেছে। যেমন একটি গুরুত্বপূর্ণ পরিবর্তন হল জাভা জেনেরিক বা সাধারণীকরণের প্রবর্তন। এই কার্যকারিতাটি ভাষাটি আরও নমনীয় এবং বহুমুখী নয়, তবে ডেটা প্রকারগুলি হ্রাসের ক্ষেত্রেও অনেক বেশি নিরাপদ।

আসলে জেনারিক প্রবর্তনের আগে, জাভাতে জেনেরিক কোড তৈরি হতে পারে, কেবলমাত্র বস্তুর লিঙ্কের সাথে। এই ধরনের লিঙ্ক কোনো বস্তুর জন্য বরাদ্দ করা যেতে পারে। সব পরে, জাভা সব ক্লাস অবজেক্ট ক্লাস এর অন্তর্নিহিত বংশধর। তবে, এই পদ্ধতিটি অনেক ধরণের নিরাপত্তার ত্রুটিগুলির একটি সম্ভাব্য উত্স। যখন আপনি অবজেক্ট থেকে অবজেক্ট থেকে টার্গেটের প্রকারে রূপান্তর করেন। সাধারণীকরণের সময় ব্যবহার করা হয়, সমস্ত কাস্ট করুন নিখুঁত এবং স্বয়ংক্রিয়ভাবে সঞ্চালিত হয়, যা এমনকি ত্রুটিগুলির সম্ভাব্য সম্ভাব্যতা বাদ দেয়।

জাভা জেনারিক্স: বর্ণনা এবং উদাহরণ

আসুন নীচের চিত্রের মধ্যে সাধারণ শ্রেণীতে সাধারণকরণ প্রয়োগ করার একটি সহজ উদাহরণ পরীক্ষা করি। এবং শুধুমাত্র তারপর আমরা জাভা জেনেরিক এর সব subtleties এবং ঘনত্ব একটি বিস্তারিত পরীক্ষা এগিয়ে যেতে হবে।

পেয়ার ক্লাস ঘোষণা করা হয় কিভাবে লক্ষ্য করুন। বর্গ নামের পরে ডানদিকে, কোণ বন্ধনীগুলি খোলা হয়, যেখানে চিঠি টি নির্দেশ করা হয়। এটি একটি ধরনের স্থানধারক যা এই শ্রেণীর একটি উদাহরণ তৈরি করার সময় একটি নির্দিষ্ট প্রকারের সাথে প্রতিস্থাপিত হবে। এটি এই মত দেখাচ্ছে: জুড়ি <ইন্টিজার> obj = নতুন জুড়ি <পূর্ণসংখ্যা> ()। এটি উল্লেখ্য যে টি পরিবর্তে আপনি কোন চিঠি নির্দিষ্ট করতে পারেন, কিন্তু, একটি নিয়ম হিসাবে, টি, ভি বা ই ব্যবহার করুন।

দ্রষ্টব্য: জাভা এর অষ্টম সংস্করণ থেকে শুরু, লিঙ্কটি ঘোষিত হলে লক্ষ্যের প্রকার উল্লেখ করে, আপনি কন্সট্রাকটরের ফাঁকা কোণ বন্ধনীটি ত্যাগ করতে পারেন। সুতরাং উপরে উল্লিখিত উদাহরণটি পুনরায় লেখা হতে পারে: জুড়ি <ইন্টিজার> obj = নতুন জুড়ি <> ()।

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

যুক্তিবিজ্ঞান অনুসরণ করে, সংশ্লিষ্ট কনস্ট্যান্টরকে দেওয়া প্রথম আইটম এবং দ্বিতীয় আইটম আর্গুমেন্টটিও অবশ্যই পূর্ণসংখ্যা বা এর উপকলা হতে হবে। আপনি যদি এমন একটি ডাটা টাইপ পাস করার চেষ্টা করেন যা অবজেক্ট তৈরির সময় নির্দিষ্ট করা থেকে ভিন্ন হয় তবে কম্পাইলার এই ত্রুটিটি এড়িয়ে যাবে না। সুতরাং, বস্তু তৈরি করার সময় আর্গুমেন্ট সহ কন্সট্রাকটরটি নিম্নলিখিত ফর্ম থাকবে: জুড়ি <ইন্টিজার> ওজজ = নতুন জুড়ি <> (নতুন পূর্ণসংখ্যা (1), নতুন পূর্ণসংখ্যা (2))। সেটফার্স্ট এবং সেট সেকেন্ডের পদ্ধতিতে আর্গুমেন্টগুলির ক্ষেত্রেও এটি প্রযোজ্য। এবং আপনি সম্ভবত ইতিমধ্যে অনুমান হিসাবে, GetFirst এবং পেতে সেকেন্ডের পদ্ধতি টাইপ পূর্ণসংখ্যা ফিরে পাবেন

বিভিন্ন ধরনের পরামিতি সহ একটি জেনেরিক বর্গ

জেনেরিক ক্লাসে, আপনি কমা দ্বারা বিচ্ছিন্ন, কোণ বন্ধনী নির্দিষ্ট করা বিভিন্ন প্রকারের পরামিতি ঘোষণা করতে পারেন। এই ক্ষেত্রে জুড়ি বর্গ নীচের চিত্র উপস্থাপন করা হয়।

যেমন আপনি দেখতে পারেন, যেমন একটি বর্গ একটি উদাহরণ তৈরি করার সময়, প্যারামিটার হিসাবে একই ধরনের ধরনের সংখ্যা বন্ধনী মধ্যে নির্দিষ্ট করা উচিত। যদি আপনি মানচিত্রের মতো এই ধরনের ডাটা স্টোরে পরিচিত হন, তাহলে আপনি লক্ষ্য করতে পারেন যে একই নীতি এখানে ব্যবহার করা হয়। সেখানে, প্রথম যুক্তি কী ধরনের উল্লেখ করে, এবং দ্বিতীয়টি মানটির ধরন নির্দিষ্ট করে। এটা লক্ষ্য করা উচিত যে বস্তুর সৃষ্টির জন্য প্রদত্ত আর্গুমেন্টগুলি একই হতে পারে। সুতরাং, জুড়ি ক্লাসের একটি উদাহরণ নিম্নলিখিত ঘোষণা একেবারে সঠিক: জুড়ি <স্ট্রিং, স্ট্রিং> obj

সাধারণীকরণের কিছু বৈশিষ্ট্য

আরও এগিয়ে যাওয়ার আগে জাভা কম্পাইলার জোড় বর্গের কোনো ভিন্ন সংস্করণ তৈরি করে না। বস্তুত, সংকলন প্রক্রিয়ার সময় জেনেরিক প্রকারের সমস্ত তথ্য মুছে ফেলা হয়। পরিবর্তে, সংশ্লিষ্ট ধরনের ঢোকানো হয়, জুড়ি ক্লাস একটি বিশেষ সংস্করণ তৈরি। যাইহোক, প্রোগ্রাম নিজেই এখনও এই বর্গ একটি একক সাধারণ সংস্করণ আছে। এই প্রক্রিয়া জাভা জেনেরিক পরিষ্কারের টাইপ মধ্যে বলা হয়।

আসুন একটি গুরুত্বপূর্ণ পয়েন্ট মনে রাখবেন। একই জাভা জেনেরিক ক্লাসের বিভিন্ন সংস্করণের লিংক একই বস্তুর নির্দেশ করতে পারে না। যে, আমরা আমাদের দুটি লিঙ্ক আছে বলে যাক: জুড়ি <পূর্ণসংখ্যা> obj1 এবং জুড়ি <ডবল> obj2 অতএব, একটি ত্রুটি লাইন obj1 = obj2 মধ্যে ঘটেছে। উভয় ভেরিয়েবল টাইপ জুড়ি হয়, তারা উল্লেখ বস্তু ভিন্ন হয়। এটি জাভা জেনেরিকের ধরনের নিরাপত্তার একটি উজ্জ্বল উদাহরণ।

সাধারণীকরণের উপর নিষেধাজ্ঞা জারি করা হয়েছে

এটা বোঝা গুরুত্বপূর্ণ যে সাধারণীকরণগুলি শুধুমাত্র রেফারেন্সের প্রকারে প্রয়োগ করা যেতে পারে, অর্থাৎ, জেনেরিক ক্লাসে প্রদত্ত যুক্তিটি জাভা আর্গুমেন্ট অবশ্যই শ্রেণির ধরন হতে হবে। যেমন সহজ ধরনের, উদাহরণস্বরূপ, ডবল বা দীর্ঘ, প্রেরণ করা যাবে না। অন্য কথায়, জুড়ি শ্রেণী ঘোষণার নিম্নলিখিত লাইন বৈধ নয়: জুড়ি obj যাইহোক, এই সীমাবদ্ধতা একটি গুরুতর সমস্যা নয়, যেহেতু জাভা প্রতিটি আদিম ধরনের জন্য একটি সংশ্লিষ্ট wrapper বর্গ আছে। স্পষ্টতঃ, যদি আপনি একটি পূর্ণসংখ্যা এবং জোড়া ক্লাসে একটি লজিক্যাল মান encapsulate করতে চান, স্বয়ংক্রিয় প্যাক আপনার জন্য সবকিছু করতে হবে: জুড়ি <পূর্ণসংখ্যা, বুলিয়ান> obj = নতুন জুড়ি <> (25, সত্য)।

আরেকটি গুরুতর সীমাবদ্ধতা একটি টাইপ পরামিতি একটি উদাহরণ তৈরি অসম্ভব। সুতরাং, নিম্নলিখিত লাইন একটি সংকলন ত্রুটি কারণ হবে: টি প্রথম = নতুন টি ()। এটি স্পষ্ট, কারণ আপনি একটি পূর্ণ বর্গ বা একটি বিমূর্ত ইন্টারফেস একটি আর্গুমেন্ট হিসাবে গৃহীত হবে কিনা আগাম জানতে না। একই অ্যারে তৈরি করার জন্য যায়।

সীমিত ধরনের

জাভা জেনেরিক ক্লাসে আর্গুমেন্ট হিসাবে প্রবাহিত করা যেতে পারে এমন ধরনের তালিকা সীমাবদ্ধ করার জন্য বেশিরভাগ ক্ষেত্রেই এমন পরিস্থিতিতে রয়েছে। এর অনুমান করা যাক যে আমাদের জুড়ি বর্গ আমরা তাদের আরও গাণিতিক অপারেশন জন্য শুধুমাত্র সংখ্যাসূচক মান encapsulate করতে চান। এটি করার জন্য, আমরা টাইপ প্যারামিটারের উপরের সীমা নির্ধারণ করতে হবে। এই কোণ বন্ধনী মধ্যে পাস করা সমস্ত আর্গুমেন্ট দ্বারা উত্তরাধিকারসূত্রে একটি সুপারclass ঘোষণা ব্যবহার করে প্রয়োগ করা হয়। এটি এই মত দেখতে হবে: বর্গ জুড়ি । এইভাবে, কম্পাইলার শিখছেন যে টি প্যারামিটারের পরিবর্তে, আপনি নম্বর শ্রেণি বা এর কোন উপ-সংখ্যার পরিবর্তে অন্য কোনও বিকল্প ব্যবহার করতে পারেন।

এটি একটি সাধারণ কৌশল। এই ধরনের সীমাবদ্ধতা প্রায়ই একই শ্রেণীতে টাইপ প্যারামিটারের সামঞ্জস্য নিশ্চিত করতে ব্যবহৃত হয়। আমাদের জুড়ি বর্গ একটি উদাহরণ বিবেচনা করুন: বর্গ জুড়ি <টি, ভি প্রসারিত টি>। এখানে আমরা কম্পাইলারকে বলি যে T টি টাইপ করা অযৌক্তিক হতে পারে, এবং টাইপ V অবশ্যই T অথবা তার উপ-একগুলি হতে হবে।

"নীচের থেকে" সীমাবদ্ধতা ঠিক একই ভাবে ঘটে, কিন্তু শব্দটি পরিবর্তিত হওয়ার পরিবর্তে, শব্দ সুপার লিখিত হয়। যে, ক্লাস জুয়ার ঘোষণাপত্র <টি সুপার অ্যারেলিস্ট> ইঙ্গিত দেয় যে পরিবর্তে T এর অ্যারে লিস্ট বা যে কোনও শ্রেণী বা ইন্টারফেস যেটি উত্তরাধিকার সূত্রে পাওয়া যায় সেগুলি প্রতিস্থাপিত হতে পারে।

জেনেরিক জাভা পদ্ধতি এবং কনস্ট্রাক্টর

জাভা সাধারণীকরণের ক্ষেত্রে কেবল ক্লাসের ক্ষেত্রেই নয়, তবে পদ্ধতিগুলিও প্রয়োগ করা যেতে পারে। সুতরাং, সাধারণ পদ্ধতি স্বাভাবিক ক্লাসে ঘোষিত হতে পারে।

আপনি উপরে চিত্র দেখতে পারেন, সাধারণ পদ্ধতির ঘোষণায় জটিল কিছুই নেই। রিটার্ন টাইপ পদ্ধতি আগে এঙ্গেল বন্ধনীগুলি স্থাপন করা এবং তাদের মধ্যে প্রকারের পরামিতি উল্লেখ করা যথেষ্ট।

একটি কন্সট্রাকটরের ক্ষেত্রে, সবকিছু একইভাবে করা হয়:

এই ক্ষেত্রে কোণ বন্ধনীগুলি কন্সট্রাকটরের নামের সামনে স্থাপন করা হয়, যেহেতু এটি কোন মান ফেরত দেয় না। উভয় প্রোগ্রাম কাজ ফলাফল হবে:

পূর্ণসংখ্যা

দড়ি

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 bn.delachieve.com. Theme powered by WordPress.