আমি ব্যাখ্যা করতে ডার্মাইক থেকে উত্তরটি ভেঙে দেওয়ার চেষ্টা করতে চাই:
প্রথমত, টাইপ ইরেজিওর যে JDK মানে এই নয় ঘটিয়েছে রানটাইম এ ধরনের তথ্য। এটি একই ভাষায় সহ-উপস্থিত থাকতে সংকলন-টাইম টাইপ চেকিং এবং রানটাইম ধরণের সামঞ্জস্যতা মঞ্জুর করার জন্য একটি পদ্ধতি। কোডটির এই ব্লকটি বোঝায় যে, জেডিকে মুছে যাওয়া ধরণের তথ্য ধরে রাখে - এটি কেবল পরীক্ষিত কাস্ট এবং কাস্টমগুলির সাথে সম্পর্কিত নয়।
দ্বিতীয়ত, এটি জেনেরিক শ্রেণীর তথ্য জেনেরিক শ্রেণীর জন্য সরবরাহ করা হয় যা কংক্রিটের ধরণ থেকে চূড়ান্তভাবে ধাপে ধাপে ধাপে ধাপে আসে - যেমন জেনেরিক ধরণের প্যারামিটার সহ একটি বিমূর্ত অভিভাবক শ্রেণি নিজেই একটি কংক্রিট প্রয়োগের জন্য তার ধরণের পরামিতিগুলির সাথে সম্পর্কিত কংক্রিটের প্রকারগুলি খুঁজে পেতে পারে যে এটি থেকে সরাসরি উত্তরাধিকার সূত্রে। যদি এই শ্রেণিটি অ-বিমূর্ত এবং তাত্ক্ষণিক হয়, বা কংক্রিটের বাস্তবায়ন দুটি স্তর নীচে থাকে তবে এটি কাজ করবে না (যদিও সামান্য কিছুটা জিমিং এটি একেরও বেশি পূর্ব নির্ধারিত সংখ্যার জন্য প্রয়োগ করতে পারে বা নিম্নতম শ্রেণি পর্যন্ত) এক্স জেনেরিক ধরণের পরামিতি সহ, এবং অন্যান্য)
যাইহোক, ব্যাখ্যা থেকে। এখানে কোড আবার, রেফারেন্সের স্বাচ্ছন্দ্যের জন্য লাইনে বিভক্ত:
1 # শ্রেণীর জেনেরিকপ্যারামিটার 0 আগে এই ক্লাস =
2 # (শ্রেণি)
3 # ((প্যারামিটারাইজড টাইপ)
4 # getClass ()
5 # .সেট জেনেরিকসপারক্লাস ())
6 # .getActualTypeArguments () [0];
এই কোডটি ধারণ করে জেনেরিক প্রকারের সাথে আমাদের 'বিমূর্ত' শ্রেণি হওয়া যাক। মোটামুটি ভিতরে এটি পড়া:
- লাইন 4 বর্তমান কংক্রিট শ্রেণীর ক্লাস উদাহরণ পেয়েছে। এটি আমাদের তাত্ক্ষণিক বংশধরের কংক্রিটের ধরণ চিহ্নিত করে।
- লাইন 5 সেই ধরণের ক্লাস পায় 'টাইপ হিসাবে সুপারটাইপ; এই যে আমরা. যেহেতু আমরা একটি প্যারাম্যাট্রিক টাইপ করছি আমরা নিরাপদে নিজেকে প্যারামিটারাইজড টাইপ (লাইন 3) এ কাস্ট করতে পারি। মূলটি হ'ল যখন জাভা এই ধরণের অবজেক্টটি নির্ধারণ করে, এটি নতুন প্যারামিটারাইজড টাইপের ক্ষেত্রে আমাদের টাইপ পরামিতিগুলির সাথে টাইপ তথ্য সংযুক্ত করতে বাচ্চার উপস্থিত টাইপ তথ্য ব্যবহার করে। সুতরাং এখন আমরা আমাদের জেনেরিকের জন্য কংক্রিটের ধরণের অ্যাক্সেস করতে পারি।
- শ্রেণি কোডে ঘোষিত অনুযায়ী লাইন 6 আমাদের জেনারিকগুলিতে ম্যাপযুক্ত ধরণের অ্যারে পায়। এই উদাহরণের জন্য আমরা প্রথম প্যারামিটারটি বের করি। এটি টাইপ হিসাবে ফিরে আসে।
- লাইন 2 চূড়ান্ত প্রকারটি একটি শ্রেণিতে ফিরে এসেছে ts এটি নিরাপদ কারণ আমরা জানি যে আমাদের জেনেরিক ধরণের পরামিতিগুলি কী ধরণের নিতে পারে এবং তা নিশ্চিত করতে পারে যে সেগুলি সমস্ত শ্রেণি হবে (আমি নিশ্চিত নই যে জাভাতে কীভাবে জেনেরিক পরামিতি পাওয়া যাবে যার ক্লাস উদাহরণ নেই) এর সাথে যুক্ত, আসলে)।
...এবং thats প্রায় কাছাকাছি এটি. সুতরাং আমরা আমাদের নিজের কংক্রিট বাস্তবায়ন থেকে টাইপ তথ্যগুলিকে নিজের মধ্যে ফিরিয়ে আনি এবং একটি শ্রেণিবদ্ধ হ্যান্ডেল অ্যাক্সেস করতে এটি ব্যবহার করি। আমরা getGenericSuperclass () কে দ্বিগুণ করতে পারি এবং দুটি স্তরে যেতে পারি, বা getGenericSuperclass () কে নির্মূল করতে পারি এবং একটি কংক্রিট ধরণের হিসাবে নিজের জন্য মান পেতে পারি (সতর্কতা: আমি এই পরিস্থিতিগুলি পরীক্ষা করি নি, তারা এখনও আমার কাছে আসে নি)।
আপনার কংক্রিটের বাচ্চারা হুপের একটি স্বেচ্ছাসেবী সংখ্যক হয়ে উঠলে বা আপনি যদি কংক্রিট এবং চূড়ান্ত না হন এবং বিশেষত আপনার যদি কোনও (ভেরিয়েবল ডিপ) বাচ্চাদের নিজস্ব জেনেরিকের আশা করা হয় তবে বিশেষত কঠিন if তবে আপনি সাধারণত সেই বিবেচনাগুলির আশেপাশে ডিজাইন করতে পারেন, তাই এটি আপনাকে বেশিরভাগ ক্ষেত্রেই পায়।
আশা করি এটি কারও সাহায্য করেছে! আমি জানি এই পোস্টটি প্রাচীন। আমি সম্ভবত এই ব্যাখ্যাটি স্নাপ করব এবং অন্যান্য প্রশ্নের জন্য রেখে দেব।