Java Technologies Generic Arrays এবং Varargs গাইড ও নোট

421

জাভার জেনেরিক্স এবং অ্যারের মধ্যে একটি সীমাবদ্ধ সম্পর্ক রয়েছে। এটি জাভার টাইপ সেফটি নিশ্চিত করার সময় Generic Arrays এবং Varargs-এ কিছু চ্যালেঞ্জ তৈরি করে। সঠিক নিয়ম এবং কৌশল ব্যবহারের মাধ্যমে এই চ্যালেঞ্জগুলি মোকাবেলা করা যায়।


Generic Arrays

কেন Generic Arrays সরাসরি তৈরি করা যায় না?

জাভার জেনেরিক্স Type Erasure ব্যবহার করে। এটি টাইপ সম্পর্কিত তথ্য Compile-Time-এ চেক করে, কিন্তু Runtime-এ টাইপ সম্পর্কিত তথ্য মুছে ফেলে। অ্যারে টাইপ চেক Runtime-এ ঘটে, তাই জেনেরিক টাইপ এবং অ্যারে একসাথে ব্যবহারে সমস্যা হয়।

কম্পাইল-টাইম ত্রুটি:

T[] array = new T[10]; // Compile-time error

Generic Arrays তৈরি করার উপায়

  1. Object Array ব্যবহার করে:

    public class GenericArray<T> {
        private T[] array;
    
        @SuppressWarnings("unchecked")
        public GenericArray(int size) {
            array = (T[]) new Object[size]; // Runtime cast
        }
    
        public void set(int index, T value) {
            array[index] = value;
        }
    
        public T get(int index) {
            return array[index];
        }
    }
    
    public static void main(String[] args) {
        GenericArray<String> genericArray = new GenericArray<>(5);
        genericArray.set(0, "Java");
        System.out.println(genericArray.get(0)); // Output: Java
    }
    
  2. Generic Lists ব্যবহার করে অ্যারের বিকল্প:

    import java.util.ArrayList;
    import java.util.List;
    
    public class GenericList<T> {
        private List<T> list = new ArrayList<>();
    
        public void add(T value) {
            list.add(value);
        }
    
        public T get(int index) {
            return list.get(index);
        }
    }
    
    public static void main(String[] args) {
        GenericList<String> genericList = new GenericList<>();
        genericList.add("Generics");
        System.out.println(genericList.get(0)); // Output: Generics
    }
    

Varargs এবং Generics

Varargs এর সমস্যা

Generics এবং Varargs একসাথে ব্যবহার করার সময় heap pollution (টাইপ ইনকনসিস্টেন্সি) হতে পারে।

Heap Pollution উদাহরণ:

public class VarargsExample {
    @SafeVarargs
    public static <T> void printArray(T... elements) {
        for (T element : elements) {
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        printArray("Java", "Generics", "Varargs");
        printArray(1, 2, 3);
    }
}

সমাধান:

  1. @SafeVarargs অ্যানোটেশন ব্যবহার করুন: এটি কম্পাইলারকে নির্দেশ করে যে মেথডটি টাইপ-সেফ।
  2. Varargs এর বিকল্প: List<T> ব্যবহার করে Varargs সমস্যার সমাধান করা যায়।

Generic Arrays এবং Varargs এর ভালো অভ্যাস

1. Generic Arrays তৈরিতে সতর্কতা

Generic Arrays সরাসরি তৈরি না করে Object অ্যারে ব্যবহার করুন এবং Unchecked Cast Warning ম্যানেজ করুন।

2. Varargs ব্যবহারের ক্ষেত্রে সতর্কতা

  • @SafeVarargs ব্যবহার করুন, যদি নিশ্চিত হন যে টাইপ-সেফটি বজায় রাখা হবে।
  • টাইপ ইনকনসিস্টেন্সি এড়াতে Collections (যেমন List বা Set) ব্যবহার করুন।

উদাহরণ: Varargs এবং Generic Arrays একসাথে

সমস্যা:

public static <T> void unsafeMethod(T... elements) {
    Object[] array = elements;
    array[0] = 100; // Type mismatch: adds an Integer to a String array
}

সমাধান:

@SafeVarargs
public static <T> void safeMethod(T... elements) {
    for (T element : elements) {
        System.out.println(element);
    }
}

public static void main(String[] args) {
    safeMethod("Java", "Generics", "SafeVarargs");
    // Output:
    // Java
    // Generics
    // SafeVarargs
}

  1. Generic Arrays:
    • সরাসরি তৈরি করা যায় না।
    • Object Array বা Collection ব্যবহার করে বিকল্প তৈরি করা যায়।
  2. Varargs:
    • Generics এর সাথে Varargs ব্যবহারে heap pollution সমস্যা এড়াতে @SafeVarargs ব্যবহার করুন।
    • Collections (যেমন List বা Set) প্রায়শই ভালো বিকল্প।
  3. Type Safety বজায় রাখা: জেনেরিক্সের টাইপ-সেফটি নিশ্চিত করতে সঠিক নিয়ম এবং সতর্কতার সঙ্গে Generic Arrays এবং Varargs ব্যবহার করুন।
Content added By

Generic Arrays তৈরি করা

309

জাভায় জেনেরিক্স এবং অ্যারে একসঙ্গে ব্যবহার করা কিছু সীমাবদ্ধতার কারণে সরাসরি Generic Arrays তৈরি করা যায় না। এর প্রধান কারণ হলো Type Erasure, যা জেনেরিক টাইপ সম্পর্কিত তথ্যকে কম্পাইল-টাইমে মুছে ফেলে। তবে, কিছু কৌশলের মাধ্যমে জেনেরিক অ্যারের কার্যকারিতা অর্জন করা যায়।


Generic Arrays সরাসরি তৈরি করার সীমাবদ্ধতা

কোড উদাহরণ (সঠিক নয়):

public class GenericArray<T> {
    private T[] array;

    public GenericArray(int size) {
        array = new T[size]; // Compile-time error
    }
}

কারণ:

  1. জেনেরিক্সের টাইপ T Runtime-এ উপলব্ধ থাকে না।
  2. জাভার জেনেরিক্স Runtime-এ টাইপ তথ্য মুছে ফেলে, ফলে জাভা জানে না কী ধরনের অ্যারে তৈরি করতে হবে।

Generic Arrays তৈরির সমাধান

1. Object Array ব্যবহার করা

Generic Arrays তৈরি করতে Object Array ব্যবহার করে তা টাইপ কাস্ট করা যেতে পারে।

উদাহরণ:

public class GenericArray<T> {
    private T[] array;

    @SuppressWarnings("unchecked")
    public GenericArray(int size) {
        array = (T[]) new Object[size]; // Type casting Object array to T array
    }

    public T get(int index) {
        return array[index];
    }

    public void set(int index, T value) {
        array[index] = value;
    }

    public static void main(String[] args) {
        GenericArray<String> stringArray = new GenericArray<>(10);
        stringArray.set(0, "Hello");
        System.out.println(stringArray.get(0));
    }
}

আউটপুট:

Hello

বিঃদ্রঃ: @SuppressWarnings("unchecked") ব্যবহার করতে হয় কারণ টাইপ কাস্টিং চলাকালীন কম্পাইলার ওয়ার্নিং দেখায়।


2. Reflection ব্যবহার করা

java.lang.reflect.Array ক্লাস ব্যবহার করে Runtime-এ Generic Arrays তৈরি করা যায়।

উদাহরণ:

import java.lang.reflect.Array;

public class GenericArrayWithReflection<T> {
    private T[] array;

    @SuppressWarnings("unchecked")
    public GenericArrayWithReflection(Class<T> clazz, int size) {
        array = (T[]) Array.newInstance(clazz, size); // Create array using reflection
    }

    public T get(int index) {
        return array[index];
    }

    public void set(int index, T value) {
        array[index] = value;
    }

    public static void main(String[] args) {
        GenericArrayWithReflection<String> stringArray = new GenericArrayWithReflection<>(String.class, 10);
        stringArray.set(0, "Generics");
        System.out.println(stringArray.get(0));
    }
}

আউটপুট:

Generics

3. List ব্যবহার করে Generic Arrays এর বিকল্প

জাভার List ইন্টারফেস এবং ArrayList ক্লাস ব্যবহার করে অ্যারে-সদৃশ Generic Collections তৈরি করা যেতে পারে।

উদাহরণ:

import java.util.ArrayList;
import java.util.List;

public class GenericArrayUsingList<T> {
    private List<T> list;

    public GenericArrayUsingList() {
        list = new ArrayList<>();
    }

    public void add(T value) {
        list.add(value);
    }

    public T get(int index) {
        return list.get(index);
    }

    public static void main(String[] args) {
        GenericArrayUsingList<String> stringArray = new GenericArrayUsingList<>();
        stringArray.add("Java Generics");
        System.out.println(stringArray.get(0));
    }
}

আউটপুট:

Java Generics

Generic Arrays তৈরির সীমাবদ্ধতা ও পরামর্শ

সীমাবদ্ধতা:

  1. Type Erasure: Generic Arrays সরাসরি তৈরি করা যায় না।
  2. Runtime Type Information: Runtime-এ টাইপ চেকিং সম্ভব নয়।

পরামর্শ:

  • Object[] বা Reflection ব্যবহার করে Generic Arrays তৈরি করুন।
  • Generic Arrays-এর পরিবর্তে Collections ব্যবহার করুন, যেমন ArrayList
  • টাইপ ক্যাস্টিং করার সময় সতর্ক থাকুন এবং @SuppressWarnings ব্যবহার করুন।

Generic Arrays সরাসরি তৈরি করা সম্ভব নয়, তবে Object Arrays, Reflection, বা Collections Framework ব্যবহার করে এই সীমাবদ্ধতা এড়ানো যায়। জাভার জেনেরিক্স Type Safety নিশ্চিত করলেও অ্যারের ক্ষেত্রে বিশেষ কিছু কৌশল প্রয়োজন হয়।

Content added By

Type Safety এবং Generic Arrays এর সীমাবদ্ধতা

265

জাভা জেনেরিক্স প্রোগ্রামিংয়ে টাইপ সেফটি (Type Safety) নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। তবে, Generic Arrays-এর কিছু সীমাবদ্ধতা রয়েছে যা Type Erasure এবং জাভার Runtime টাইপ সিস্টেমের কারণে বিদ্যমান।


Type Safety এবং Generic Arrays

Type Safety কী?

Type Safety নিশ্চিত করে যে কোডে ব্যবহৃত ডেটার টাইপ আগে থেকেই নির্ধারণ করা আছে, এবং ভুল টাইপ ব্যবহারের সম্ভাবনা কমিয়ে দেয়।

উদাহরণ (টাইপ সেফ জেনেরিক্স ব্যবহার):

List<String> list = new ArrayList<>();
list.add("Hello");
// list.add(10); // Compile-time Error
String str = list.get(0); // No need for casting
System.out.println(str);

উপকারিতা:

  1. Compile-Time টাইপ চেকিং।
  2. ClassCastException এর ঝুঁকি হ্রাস।
  3. কাস্টিংয়ের প্রয়োজন হয় না, ফলে কোড পরিষ্কার এবং সহজ হয়।

Generic Arrays-এর সীমাবদ্ধতা

জাভাতে Generic Arrays তৈরি করা সম্ভব নয়। এর প্রধান কারণ হলো Type Erasure। এটি Runtime-এ Generic টাইপ মুছে দেয় এবং Generic Arrays-এর Type Safety বজায় রাখতে সমস্যার সৃষ্টি করে।

Generic Arrays তৈরি করার চেষ্টা করলে কী হয়?
// Compile-time Error
List<String>[] stringLists = new ArrayList<String>[10];

Error:

generic array creation
Generic Arrays সীমাবদ্ধতার কারণ:
  1. Type Erasure: জেনেরিক্স Runtime-এ টাইপ মুছে দেয়। ফলে অ্যারে টাইপ সেফটি নিশ্চিত করা কঠিন।
  2. Covariant Nature of Arrays: অ্যারে কোভেরিয়েন্ট (Covariant), কিন্তু জেনেরিক্স ইনভারিয়েন্ট (Invariant)।

    Object[] objArray = new String[10]; // Valid
    List<Object> objList = new ArrayList<String>(); // Compile-time Error
    

Generic Arrays এর জন্য Workaround বা সমাধান

১. Collections ব্যবহার করুন

Generic Arrays-এর পরিবর্তে Collections ব্যবহার করা নিরাপদ এবং কার্যকর।

List<List<String>> listOfLists = new ArrayList<>();
List<String> list = new ArrayList<>();
list.add("Hello");
listOfLists.add(list);
System.out.println(listOfLists);

২. Object Array ব্যবহার এবং কাস্টিং

Object Array ব্যবহার করে Generic Arrays তৈরি করা সম্ভব, তবে এটি Type Safety নিশ্চিত করে না।

List<String>[] listArray = (List<String>[]) new List[10];
listArray[0] = new ArrayList<>();
listArray[0].add("Hello");
System.out.println(listArray[0].get(0));

Warning: এটি Runtime-এ ClassCastException ঘটাতে পারে।

৩. Generic ক্লাস ব্যবহার করুন

class GenericArray<T> {
    private T[] array;

    @SuppressWarnings("unchecked")
    public GenericArray(int size) {
        array = (T[]) new Object[size];
    }

    public T get(int index) {
        return array[index];
    }

    public void set(int index, T value) {
        array[index] = value;
    }
}

public class Main {
    public static void main(String[] args) {
        GenericArray<String> genericArray = new GenericArray<>(10);
        genericArray.set(0, "Hello Generics");
        System.out.println(genericArray.get(0));
    }
}

৪. Collections API এবং Generics এর সম্মিলিত ব্যবহার

public class GenericCollectionsExample {
    public static void main(String[] args) {
        List<List<String>> lists = new ArrayList<>();
        List<String> list1 = new ArrayList<>();
        list1.add("Java");
        lists.add(list1);

        List<String> list2 = new ArrayList<>();
        list2.add("Generics");
        lists.add(list2);

        for (List<String> list : lists) {
            System.out.println(list);
        }
    }
}

Generic Arrays এবং Type Safety নিয়ে কিছু গুরুত্বপূর্ণ বিষয়

  1. Arrays এবং Generics একত্রে ব্যবহার করার ঝুঁকি: অ্যারে এবং জেনেরিক্স একত্রে ব্যবহার করলে Type Safety নষ্ট হতে পারে।

    Object[] objArray = new String[10];
    objArray[0] = 10; // Runtime ArrayStoreException
    
  2. Varargs এবং Generics এর সমস্যা: Varargs-এর সাথে Generic Arrays ব্যবহার করলেও টাইপ সেফটি প্রশ্নবিদ্ধ হয়।

    @SafeVarargs
    public static <T> void printArray(T... elements) {
        for (T element : elements) {
            System.out.println(element);
        }
    }
    

  • জাভা জেনেরিক্স টাইপ সেফ কোড নিশ্চিত করতে কার্যকর, তবে Generic Arrays তৈরি করা Type Erasure এবং Covariance/Variance এর কারণে সীমাবদ্ধ।
  • Generic Arrays এর সমস্যা সমাধানের জন্য Collections, Generic ক্লাস, বা Object Arrays ব্যবহার করা যেতে পারে।
  • Type Safety বজায় রাখার জন্য জাভার Collections API ব্যবহার করার পরামর্শ দেওয়া হয়।

এই সীমাবদ্ধতা সত্ত্বেও, জেনেরিক্স টাইপ সেফ এবং রিইউজেবল কোড লেখার জন্য একটি শক্তিশালী টুল।

Content added By

@SafeVarargs Annotation এর ব্যবহার

294

@SafeVarargs হল জাভার একটি অ্যানোটেশন যা জাভা 7 এ যুক্ত হয়েছিল এবং এটি জাভার জেনেরিক ভেরিয়াডিক (Varargs) মেথডে ব্যবহৃত হয়। এটি একটি কম্পাইলার নির্দেশনা যা নিশ্চিত করে যে মেথডটি heap pollution-এর মতো অনিরাপদ অপারেশন সম্পাদন করে না।


প্রধান সমস্যা: Varargs এবং Generics

জেনেরিক্স এবং ভেরিয়াডিক প্যারামিটার (...) একত্রে ব্যবহার করার সময় কম্পাইলার একটি unchecked warning দেখায়। উদাহরণস্বরূপ:

@SafeVarargs
public static <T> void printElements(T... elements) {
    for (T element : elements) {
        System.out.println(element);
    }
}

Heap Pollution:

জেনেরিক্স ব্যবহার করার সময় heap pollution সমস্যা ঘটে যখন জেনেরিক টাইপ সম্পর্কে রানটাইমে সঠিক তথ্য থাকে না। এর ফলে টাইপ সেফটি লঙ্ঘিত হতে পারে।


@SafeVarargs এর প্রয়োজন কেন?

নিম্নলিখিত পরিস্থিতিতে জাভা কম্পাইলার unchecked warning জারি করে:

  • যখন জেনেরিক ভেরিয়াডিক প্যারামিটার মেথডে ব্যবহার করা হয়।
  • জেনেরিক্স এবং ভেরিয়াডিক প্যারামিটার একসাথে টাইপ সেফটি লঙ্ঘনের ঝুঁকি বাড়ায়।

@SafeVarargs এই সমস্যাটি সমাধান করতে ব্যবহৃত হয়। এটি নিশ্চিত করে যে মেথডটি টাইপ সেফ এবং কোনো unchecked warning দেখাবে না।


@SafeVarargs এর নিয়ম ও সীমাবদ্ধতা

  1. এটি শুধুমাত্র:
    • Static মেথড
    • Final মেথড
    • Constructor এর জন্য ব্যবহৃত হতে পারে।
  2. এটি Non-Final Instance মেথড এর জন্য ব্যবহার করা যায় না, কারণ ইনহেরিটেন্সের মাধ্যমে টাইপ সেফটি লঙ্ঘিত হতে পারে।

@SafeVarargs এর উদাহরণ

উদাহরণ ১: জেনেরিক ভেরিয়াডিক মেথড

public class SafeVarargsExample {

    @SafeVarargs
    public static <T> void printElements(T... elements) {
        for (T element : elements) {
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        printElements("One", "Two", "Three");
        printElements(1, 2, 3, 4, 5);
    }
}

আউটপুট:

One
Two
Three
1
2
3
4
5

উদাহরণ ২: Final Instance মেথডে ব্যবহার

public class SafeVarargsExample {

    @SafeVarargs
    public final <T> void display(T... items) {
        for (T item : items) {
            System.out.println(item);
        }
    }

    public static void main(String[] args) {
        SafeVarargsExample example = new SafeVarargsExample();
        example.display("A", "B", "C");
        example.display(10, 20, 30);
    }
}

আউটপুট:

A
B
C
10
20
30

Heap Pollution এড়াতে সতর্কতা

@SafeVarargs ব্যবহার করার সময় নিশ্চিত হতে হবে যে ভেরিয়াডিক প্যারামিটার টাইপ সেফ অপারেশন করছে। নিচে একটি heap pollution ঘটতে পারে এমন উদাহরণ দেওয়া হলো:

উদাহরণ ৩: Unsafe Varargs অপারেশন

public class UnsafeVarargs {

    @SafeVarargs
    public static <T> void unsafeOperation(T... elements) {
        Object[] array = elements; // Varargs stored as Object array
        array[0] = "Unsafe"; // Potential heap pollution
        T firstElement = elements[0]; // Type mismatch
    }

    public static void main(String[] args) {
        unsafeOperation(1, 2, 3); // Runtime type issue
    }
}

সম্ভাব্য সমস্যা:

  • এটি টাইপ সেফটি লঙ্ঘিত করে এবং ClassCastException ঘটাতে পারে।

সেরা প্র্যাকটিস

  1. @SafeVarargs ব্যবহার করার সময় নিশ্চিত করুন যে:
    • ভেরিয়াডিক প্যারামিটার সরাসরি মডিফাই হচ্ছে না।
    • কাস্টিং বা টাইপ কনভার্সন ঠিকভাবে পরিচালিত হচ্ছে।
  2. যদি ঝুঁকি থাকে, তাহলে বিকল্প ব্যবহার করুন:

    • Collections এর মতো টাইপ সেফ কন্টেইনার ব্যবহার করুন।
    public static <T> void processElements(List<T> elements) {
        for (T element : elements) {
            System.out.println(element);
        }
    }
    

  1. @SafeVarargs কম্পাইলারকে নির্দেশ করে যে মেথডটি টাইপ সেফ এবং কোনো heap pollution ঘটাবে না।
  2. এটি শুধুমাত্র Static, Final, এবং Constructor মেথডে প্রযোজ্য।
  3. টাইপ সেফটি নিশ্চিত করতে এবং রানটাইম এরর এড়াতে এটি ব্যবহার করা গুরুত্বপূর্ণ।
  4. যথাযথ সতর্কতা ছাড়া @SafeVarargs ব্যবহার করলে জেনেরিক্স এবং ভেরিয়াডিক প্যারামিটারের মূল উদ্দেশ্য ব্যর্থ হতে পারে।
Content added By

Varargs এর মাধ্যমে Generic Method Creation

396

জাভায় Varargs (Variable Arguments) ব্যবহার করে জেনেরিক মেথড তৈরি করা সম্ভব। এটি ডেভেলপারদের একই মেথডে ভিন্ন ভিন্ন সংখ্যক আর্গুমেন্ট পাস করার সুবিধা দেয়। যখন জেনেরিক্সের সাথে Varargs ব্যবহার করা হয়, তখন এটি টাইপ সেফ এবং ফ্লেক্সিবল পদ্ধতিতে কাজ করে।


Varargs কি?

Varargs মেথডে একটি ভেরিয়েবল সংখ্যক আর্গুমেন্ট পাস করার অনুমতি দেয়। এটি ... চিহ্ন ব্যবহার করে ডিক্লেয়ার করা হয়:

public void methodName(Type... varargs) {
    // Method implementation
}

Generic Method এবং Varargs এর Syntax

public static <T> void methodName(T... args) {
    // Method implementation
}
  • <T>: জেনেরিক টাইপ প্যারামিটার যা মেথডে ব্যবহৃত হয়।
  • T... args: Varargs প্যারামিটার, যা মেথডে একটি ভেরিয়েবল সংখ্যক আর্গুমেন্ট গ্রহণ করে।

Generic Varargs Method এর উদাহরণ

উদাহরণ ১: মেথডে ডেটা প্রিন্ট করা

public class GenericVarargsExample {
    public static <T> void printElements(T... elements) {
        for (T element : elements) {
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        printElements(1, 2, 3, 4); // Integer values
        printElements("Java", "Generics", "Varargs"); // String values
    }
}

আউটপুট:

1
2
3
4
Java
Generics
Varargs

উদাহরণ ২: সর্বোচ্চ উপাদান খুঁজে বের করা

public class GenericMaxFinder {
    public static <T extends Comparable<T>> T findMax(T... elements) {
        if (elements == null || elements.length == 0) {
            throw new IllegalArgumentException("No elements provided");
        }
        T max = elements[0];
        for (T element : elements) {
            if (element.compareTo(max) > 0) {
                max = element;
            }
        }
        return max;
    }

    public static void main(String[] args) {
        System.out.println(findMax(1, 5, 3, 9, 2)); // Integer values
        System.out.println(findMax("Apple", "Orange", "Banana")); // String values
    }
}

আউটপুট:

9
Orange

Varargs এবং টাইপ সেফটি

Varargs এর মাধ্যমে জেনেরিক্স ব্যবহারে টাইপ সেফটি নিশ্চিত করতে জাভা একটি কম্পাইল-টাইম সতর্কবার্তা দেয়। উদাহরণস্বরূপ:

public static <T> void addToList(List<T> list, T... elements) {
    for (T element : elements) {
        list.add(element);
    }
}

সতর্কবার্তা:

Note: Generic array creation for varargs parameter is unsafe

সতর্কবার্তা এড়ানোর জন্য @SafeVarargs

যখন জেনেরিক Varargs মেথড টাইপ সেফ, তখন @SafeVarargs অ্যানোটেশন ব্যবহার করা যেতে পারে। এটি কম্পাইল-টাইম সতর্কবার্তা দূর করে।

import java.util.List;

public class SafeVarargsExample {
    @SafeVarargs
    public static <T> void addToList(List<T> list, T... elements) {
        for (T element : elements) {
            list.add(element);
        }
    }

    public static void main(String[] args) {
        List<String> stringList = new ArrayList<>();
        addToList(stringList, "Java", "Generics", "Varargs");
        System.out.println(stringList);
    }
}

আউটপুট:

[Java, Generics, Varargs]

Varargs এর সুবিধা

  1. ফ্লেক্সিবিলিটি: একাধিক আর্গুমেন্ট সহজে পাস করা যায়।
  2. কোড সিম্পলিসিটি: একই মেথড বিভিন্ন সংখ্যক ইনপুট গ্রহণ করতে পারে।
  3. টাইপ সেফটি: জেনেরিক্সের মাধ্যমে টাইপ সেফ কোড নিশ্চিত করা যায়।

সতর্কতা

  1. জেনেরিক্স এবং Varargs একত্রে ব্যবহার করলে জাভার Type Erasure এর কারণে কিছু সীমাবদ্ধতা থাকে।
  2. জেনেরিক Varargs এর ক্ষেত্রে @SafeVarargs ব্যবহারে সতর্ক থাকা উচিত।

Varargs এর মাধ্যমে Generic Method তৈরি করা জাভার একটি শক্তিশালী বৈশিষ্ট্য, যা ফ্লেক্সিবল এবং টাইপ সেফ কোড লিখতে সাহায্য করে। তবে, Type Erasure এর সীমাবদ্ধতা এবং টাইপ সেফটি নিশ্চিত করতে ডেভেলপারদের সতর্ক থাকা উচিত।

Content added By
Promotion

Are you sure to start over?

Loading...