মূল কন্টেন্টে যান
মডিউল 6 · 2-এর পাঠ 2কোর্সে 12/14~15 min
মডিউল পাঠ (2/2)

জাভাতে জেনেরিক

জেনারিকস (জেনারিক টাইপস) জাভাতে প্রবর্তন করা হয়েছিল ক্লাস, ইন্টারফেস এবং পদ্ধতিগুলিকে প্যারামিটার হিসাবে বিভিন্ন ধরণের কাজ করার অনুমতি দেওয়ার জন্য। এটি কম্পাইল-টাইম টাইপ নিরাপত্তা নিশ্চিত করে এবং রানটাইমে ব্যয়বহুল স্পষ্ট কাস্ট এড়ায়।

জেনেরিক ক্লাস

একটি জেনেরিক ক্লাস সংজ্ঞায়িত করা হয় কোণ বন্ধনী <T> ব্যবহার করে যেখানে T একটি টাইপের জন্য একটি স্থানধারক হিসাবে কাজ করে যা নির্দিষ্ট করা হবে যখন ক্লাসটি চালু করা হয়।

Java
public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

একটি Box অবজেক্ট তৈরি করার সময়, আমরা প্রকৃত প্রকার নির্দিষ্ট করি:

Java
Box<Integer> integerBox = new Box<>();
integerBox.setContent(123);
int value = integerBox.getContent(); // No cast needed!

জেনেরিক পদ্ধতি

আপনি একটি একক জেনেরিক পদ্ধতি সংজ্ঞায়িত করতে পারেন যা বিভিন্ন ধরণের পরামিতি গ্রহণ করতে পারে। টাইপ প্যারামিটারটি পদ্ধতির রিটার্ন টাইপের আগে স্থাপন করা হয়।

Java
public static <E> void printArray(E[] elements) {
    for (E element : elements) {
        System.out.println(element);
    }
}

ওয়াইল্ডকার্ড এবং আবদ্ধ প্রকার

আমরা extends কীওয়ার্ড ব্যবহার করে জেনেরিক দ্বারা গৃহীত প্রকারগুলিকে সীমাবদ্ধ করতে পারি (উপরের সীমানা) একটি নির্দিষ্ট প্রকার বা এর উপশ্রেণীগুলিকে গ্রহণ করতে।

Java
public static <T extends Number> void processNumber(T number) {
    // Accepts Integer, Double, Float, etc.
    System.out.println(number.doubleValue());
}

নিজে চেষ্টা করে দেখুন

ব্যায়াম#java.m6.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

গেটার getValue() যেটি T প্রদান করে এবং প্রাইভেট ভেরিয়েবল মান সেট করে সেটির সেট ভ্যালু(T মান) সংজ্ঞায়িত করে জেনেরিক ক্লাস বক্সটি সম্পূর্ণ করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

জেনেরিক টাইপ প্যারামিটার `T` ব্যবহার করে সঠিক স্বাক্ষর সহ পদ্ধতিগুলি লিখুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#java.m6.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

একটি স্ট্যাটিক জেনেরিক মেথড প্রিন্ট অ্যারে তৈরি করুন যা T[] নামের অ্যারের একটি অ্যারে নেয় এবং প্রতিটি উপাদানের জন্য একটি লুপ ব্যবহার করে প্রিন্ট করে।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

টাইপ প্যারামিটার `<T>` অবশ্যই `static` এর পরে এবং রিটার্ন টাইপ `void` এর আগে বসাতে হবে।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#java.m6.l2.e3
প্রচেষ্টা: 0লোড হচ্ছে...

একটি স্ট্যাটিক ক্লাস StringContainer তৈরি করুন যা String-এর সাথে প্যারামিটারাইজড কন্টেইনার ইন্টারফেস প্রয়োগ করে। একটি কনস্ট্রাক্টরকে সংজ্ঞায়িত করুন যা একটি স্ট্রিং প্যারামিটার নেয় এবং getItem() পদ্ধতিটি প্রয়োগ করে।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

শ্রেণী স্বাক্ষরে 'স্ট্রিং' দিয়ে জেনেরিক টাইপ `T` প্রতিস্থাপন করুন এবং `getItem()` এর রিটার্ন প্রকারে।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ