مرکزی مواد پر جائیں
ماڈیول 6 · سبق 2 از 2کورس میں 12/14~15 min
ماڈیول اسباق (2/2)

جاوا میں عمومیات

Generics (Generic Types) کو جاوا میں متعارف کرایا گیا تھا تاکہ کلاسز، انٹرفیسز اور طریقوں کو مختلف اقسام پر پیرامیٹرز کے طور پر کام کرنے کی اجازت دی جا سکے۔ یہ کمپائل ٹائم ٹائپ سیفٹی کو یقینی بناتا ہے اور رن ٹائم پر مہنگی واضح کاسٹ سے بچتا ہے۔

جنرک کلاسز

ایک عام کلاس کی تعریف زاویہ بریکٹ <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 واپس کرتا ہے اور سیٹر setValue(T ویلیو) جو نجی متغیر کی قدر کو متعین کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

عام قسم کے پیرامیٹر `T` کا استعمال کرتے ہوئے درست دستخط کے ساتھ طریقے لکھیں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#java.m6.l2.e2
کوششیں: 0لوڈ ہو رہا ہے…

ایک جامد عام طریقہ پرنٹ آرے بنائیں جو T[] نامی سرنی کی ایک صف لیتا ہے اور ہر ایک کے لیے لوپ کا استعمال کرتے ہوئے ہر عنصر کو پرنٹ کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

ٹائپ پیرامیٹر `<T>` کو `static` کے فوراً بعد اور واپسی کی قسم `void` سے پہلے رکھا جانا چاہئے۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#java.m6.l2.e3
کوششیں: 0لوڈ ہو رہا ہے…

ایک جامد کلاس StringContainer بنائیں جو String کے ساتھ پیرامیٹرائزڈ کنٹینر انٹرفیس کو نافذ کرے۔ ایک کنسٹرکٹر کی وضاحت کریں جو String پیرامیٹر لیتا ہے اور getItem() طریقہ کو نافذ کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

کلاس کے دستخط میں عام قسم `T` کو `String` کے ساتھ اور `getItem()` کی واپسی کی قسم میں تبدیل کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔