ট্র্যাক
/
Java
Java
/
সিলেবাস
/
জেনেরিক টাইপ
জে

জেনেরিক টাইপ মধ্যে Java

11টি অনুশীলনী

জেনেরিক টাইপ সম্পর্কে

একটি জেনেরিক টাইপ হলো এমন একটি জেনেরিক ক্লাস বা ইন্টারফেস, যা টাইপগুলোকে প্যারামিটার হিসেবে নিয়ে গঠিত। এর ফলে কম্পাইলার ক্লাস বা ইন্টারফেসের উপর টাইপ সেফটি প্রয়োগ করতে পারে।

এই নন-জেনেরিক Container ইন্টারফেসটি দেখুন:

class Container {
    private Object object;

    public void set(Object object) { this.object = object; }
    public Object get() { return object; }
}

যেহেতু এটি Object টাইপ গ্রহণ করে এবং রিটার্ন করে, তাই এটি যেকোনো নন-প্রিমিটিভ টাইপের সাথে কাজ করে। তবে এর একটি খরচ আছে, কারণ কিছু কোড get কল করার সময় Integer আশা করতে পারে, আবার অন্য কোড set কল করে String যোগ করে, যার ফলে রানটাইম এক্সেপশন হয়।

একটি জেনেরিক ক্লাস এবং একটি জেনেরিক ইন্টারফেস-এর ফরম্যাট নিচের মতো:

class ClassName<T1, T2, ..., Tn> { ... }
interface InterfaceName<T1, T2, ..., Tn> { ... }

ক্লাস বা ইন্টারফেসের নামের পরে অ্যাঙ্গেল ব্র্যাকেট (<>) দিয়ে ঘেরা টাইপ প্যারামিটার সেকশনটি টাইপ প্যারামিটারগুলো (যাদের টাইপ ভ্যারিয়েবলও বলা হয়) T1, T2, ..., এবং Tn নির্দিষ্ট করে। এগুলো ক্লাস বা ইন্টারফেসের বডির ভেতরে ব্যবহার করে জেনেরিক টাইপ সেফটি পাওয়া যায়।

এখানে Container-এর জেনেরিক সংস্করণ:

class Container<E> {
    private E object;

    public void set(E object) { this.object = object; }
    public E get() { return object; }
}

তৈরি করার সময় এখন আমাদের বলে দিতে হয় এটি কোন টাইপ ধারণ করবে, এবং কম্পাইলার সেই সীমাবদ্ধতা প্রয়োগ করে:

// empty <> can infer from context
Container<String> stringContainer = new Container<>();
// compiler knows this is a String, so it is allowed
stringContainer.set("Some string");
// no cast needed, compiler knows it is a String
String result = stringContainer.get();
// this causes a compiler error:
stringContainer.set(42);
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

জেনেরিক টাইপ শিখুন