মডিউল পাঠ (2/2)
জাভাতে জেনেরিক
জেনারিকস (জেনারিক টাইপস) জাভাতে প্রবর্তন করা হয়েছিল ক্লাস, ইন্টারফেস এবং পদ্ধতিগুলিকে প্যারামিটার হিসাবে বিভিন্ন ধরণের কাজ করার অনুমতি দেওয়ার জন্য। এটি কম্পাইল-টাইম টাইপ নিরাপত্তা নিশ্চিত করে এবং রানটাইমে ব্যয়বহুল স্পষ্ট কাস্ট এড়ায়।
জেনেরিক ক্লাস
একটি জেনেরিক ক্লাস সংজ্ঞায়িত করা হয় কোণ বন্ধনী <T> ব্যবহার করে যেখানে T একটি টাইপের জন্য একটি স্থানধারক হিসাবে কাজ করে যা নির্দিষ্ট করা হবে যখন ক্লাসটি চালু করা হয়।
public class Box<T> {
private T content;
public void setContent(T content) {
this.content = content;
}
public T getContent() {
return content;
}
}একটি Box অবজেক্ট তৈরি করার সময়, আমরা প্রকৃত প্রকার নির্দিষ্ট করি:
Box<Integer> integerBox = new Box<>();
integerBox.setContent(123);
int value = integerBox.getContent(); // No cast needed!জেনেরিক পদ্ধতি
আপনি একটি একক জেনেরিক পদ্ধতি সংজ্ঞায়িত করতে পারেন যা বিভিন্ন ধরণের পরামিতি গ্রহণ করতে পারে। টাইপ প্যারামিটারটি পদ্ধতির রিটার্ন টাইপের আগে স্থাপন করা হয়।
public static <E> void printArray(E[] elements) {
for (E element : elements) {
System.out.println(element);
}
}ওয়াইল্ডকার্ড এবং আবদ্ধ প্রকার
আমরা extends কীওয়ার্ড ব্যবহার করে জেনেরিক দ্বারা গৃহীত প্রকারগুলিকে সীমাবদ্ধ করতে পারি (উপরের সীমানা) একটি নির্দিষ্ট প্রকার বা এর উপশ্রেণীগুলিকে গ্রহণ করতে।
public static <T extends Number> void processNumber(T number) {
// Accepts Integer, Double, Float, etc.
System.out.println(number.doubleValue());
}নিজে চেষ্টা করে দেখুন
গেটার getValue() যেটি T প্রদান করে এবং প্রাইভেট ভেরিয়েবল মান সেট করে সেটির সেট ভ্যালু(T মান) সংজ্ঞায়িত করে জেনেরিক ক্লাস বক্সটি সম্পূর্ণ করুন।
ইঙ্গিত দেখান
জেনেরিক টাইপ প্যারামিটার `T` ব্যবহার করে সঠিক স্বাক্ষর সহ পদ্ধতিগুলি লিখুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
একটি স্ট্যাটিক জেনেরিক মেথড প্রিন্ট অ্যারে তৈরি করুন যা T[] নামের অ্যারের একটি অ্যারে নেয় এবং প্রতিটি উপাদানের জন্য একটি লুপ ব্যবহার করে প্রিন্ট করে।
ইঙ্গিত দেখান
টাইপ প্যারামিটার `<T>` অবশ্যই `static` এর পরে এবং রিটার্ন টাইপ `void` এর আগে বসাতে হবে।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
একটি স্ট্যাটিক ক্লাস StringContainer তৈরি করুন যা String-এর সাথে প্যারামিটারাইজড কন্টেইনার ইন্টারফেস প্রয়োগ করে। একটি কনস্ট্রাক্টরকে সংজ্ঞায়িত করুন যা একটি স্ট্রিং প্যারামিটার নেয় এবং getItem() পদ্ধতিটি প্রয়োগ করে।
ইঙ্গিত দেখান
শ্রেণী স্বাক্ষরে 'স্ট্রিং' দিয়ে জেনেরিক টাইপ `T` প্রতিস্থাপন করুন এবং `getItem()` এর রিটার্ন প্রকারে।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ