আসলে, আপনি যা করতে পারেন তা করতে পারেন। আপনি যদি একাধিক ইন্টারফেস বা ক্লাস প্লাস ইন্টারফেস সরবরাহ করতে চান তবে আপনার ওয়াইল্ডকার্ডকে দেখতে এমন কিছু দেখতে হবে:
<T extends ClassA & InterfaceB>
পৃষ্ঠার নীচে সূর্য.কমের বিশেষত বাউন্ডেড প্রকারের পরামিতি বিভাগে জেনারিক্স টিউটোরিয়ালটি দেখুন । আপনি যদি প্রয়োজন চান তবে আপনি প্রয়োজনে একাধিক ইন্টারফেসের তালিকা করতে পারেন ।& InterfaceName
এটি নির্বিচারে জটিল হতে পারে। প্রদর্শনের জন্য, জাভাডকের ঘোষণা দেখুন Collections#max
, যা (দুটি লাইনে আবৃত):
public static <T extends Object & Comparable<? super T>> T
max(Collection<? extends T> coll)
এত জটিল কেন? জাভা জেনেরিক্স এফএকিউতে যেমন বলা হয়েছে: বাইনারি সামঞ্জস্যতা সংরক্ষণ করার জন্য ।
দেখে মনে হচ্ছে এটি পরিবর্তনশীল ঘোষণার জন্য কাজ করে না, তবে ক্লাসে জেনেরিক সীমানা লাগানোর সময় এটি কাজ করে। সুতরাং, আপনি যা চান তা করতে আপনাকে কয়েকটি হুপের মধ্য দিয়ে ঝাঁপিয়ে পড়তে হতে পারে। কিন্তু আপনি এটা করতে পারেন। আপনি নিজের ক্লাসে জেনেরিক সীমানা রেখে, এর মতো কিছু করতে পারেন:
class classB { }
interface interfaceC { }
public class MyClass<T extends classB & interfaceC> {
Class<T> variable;
}
variable
আপনি চান যে সীমাবদ্ধতা আছে পেতে । আরও তথ্য এবং উদাহরণের জন্য, জাভা 5.0 এর জেনেরিক্সের পৃষ্ঠা 3 দেখুন । দ্রষ্টব্য, মধ্যে <T extends B & C>
, শ্রেণীর নামটি অবশ্যই প্রথম আসবে এবং ইন্টারফেসগুলি অনুসরণ করবে। এবং অবশ্যই আপনি কেবল একটি একক শ্রেণীর তালিকা করতে পারেন।