? extends HasWord
মানে "একটি শ্রেণি / ইন্টারফেস যা প্রসারিত হয় HasWord।" অন্য কথায়, HasWordনিজে বা তার যে কোনও শিশু ... মূলত এমন কিছু যা instanceof HasWordপ্লাস দিয়ে কাজ করবে null।
আরও প্রযুক্তিগত ভাষায়, ? extends HasWordএকটি সীমাবদ্ধ ওয়াইল্ডকার্ড, কার্যকর জাভা তৃতীয় সংস্করণের আইটেম 31-এ আচ্ছাদিত , যা ১৩৯ পৃষ্ঠায় শুরু হয়েছে the দ্বিতীয় সংস্করণের একই অধ্যায়টি পিডিএফ হিসাবে অনলাইনে উপলব্ধ ; সীমানা ওয়াইল্ডকার্ডের অংশটি আইটেম 28 পৃষ্ঠা থেকে শুরু হওয়া 134 page
আপডেট: পিডিএফ লিঙ্কটি আপডেট হয়েছিল যেহেতু ওরাকল কিছুক্ষণ আগে এটিকে সরিয়েছে। এটি এখন লন্ডনের স্কুল অফ ইলেক্ট্রনিক ইঞ্জিনিয়ারিং এবং কম্পিউটার সায়েন্সের কুইন মেরি বিশ্ববিদ্যালয় দ্বারা আয়োজিত অনুলিপিটির দিকে ইঙ্গিত করে।
আপডেট 2: আপনি কেন ওয়াইল্ডকার্ড ব্যবহার করতে চান তা আরও কিছু বিশদে যেতে দিন।
আপনি যদি একটি পদ্ধতি যার স্বাক্ষর ঘোষণা তাহলে আশা আপনি পাস List<HasWord>, তারপর একমাত্র জিনিস আপনি পাস করতে পারেন একটি হল List<HasWord>।
তবে, যদি স্বাক্ষরটি বলা হয় List<? extends HasWord>তবে আপনি তার List<ChildOfHasWord>পরিবর্তে পাস করতে পারেন ।
মনে রাখবেন যে List<? extends HasWord>এবং এর মধ্যে একটি সূক্ষ্ম পার্থক্য রয়েছে List<? super HasWord>। জোশুয়া ব্লচ যেমন লিখেছেন: পিইসিএস = প্রযোজক-প্রসারিত, ভোক্তা-সুপার।
এর অর্থ হ'ল যদি আপনি কোনও সংগ্রহটিতে যাচ্ছেন যা আপনার পদ্ধতিটি ডেটা টেনে আনে (যেমন সংগ্রহটি আপনার পদ্ধতির ব্যবহারের জন্য উপাদান তৈরি করছে), আপনার ব্যবহার করা উচিত extends। যদি আপনি কোনও সংগ্রহটিতে যাচ্ছেন যা আপনার পদ্ধতিতে ডেটা যুক্ত করে (যেমন সংগ্রহটি আপনার পদ্ধতি তৈরির উপাদানগুলি গ্রাস করছে), এটি ব্যবহার করা উচিত super।
এটি বিভ্রান্তিকর লাগতে পারে। যাইহোক, যদি আপনি এটা দেখতে পারেন Listএর sortকমান্ড (যা Collections.sort দুই-ARG সংস্করণে মাত্র একটি শর্টকাট)। পরিবর্তে এটি গ্রহণ করার পরিবর্তে Comparator<T>এটি গ্রহণ করে Comparator<? super T>। এই ক্ষেত্রে, Listতুলনাকারী তালিকাটি নিজেই পুনরায় অর্ডার করার জন্য উপাদানগুলির উপাদানগুলি গ্রাস করছে।