Reflection এর মাধ্যমে Array তৈরির পদ্ধতি (Array.newInstance())

Array Reflection - জাভা রিফ্লেক্ট প্যাকেজ (Java.reflect Package) - Java Technologies

308

Java Reflection API-তে Array.newInstance() মেথডটি একটি ক্লাসের টাইপ এবং আকার (size) নির্দিষ্ট করে নতুন অ্যারে তৈরি করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি রানটাইমে ডাইনামিকভাবে বিভিন্ন ধরনের অ্যারে তৈরি করতে পারেন। এটি সাধারণত সেই ক্ষেত্রে ব্যবহৃত হয় যেখানে অ্যারের টাইপ এবং আকার জানা থাকে না, এবং এগুলো রানটাইমে নির্ধারণ করতে হয়।

Array.newInstance() মেথডের সিগনেচার:

public static Object newInstance(Class<?> componentType, int length)
  • componentType: এই প্যারামিটারটি অ্যারের কম্পোনেন্ট টাইপ (উদাহরণস্বরূপ Integer.class, String.class) নির্দিষ্ট করে।
  • length: অ্যারের আকার (size) যা আপনি তৈরি করতে চান।

ব্যবহার:

Array.newInstance() মেথড ব্যবহার করে আপনি টাইপ এবং সাইজ ভিত্তিক নতুন অ্যারে তৈরি করতে পারেন। এটি এমনকি প্রাইভেট ক্লাসের অ্যারেও কাজ করতে পারে।

উদাহরণ 1: সাধারণ অ্যারে তৈরি করা

নিচে একটি সাধারণ উদাহরণ দেওয়া হল যেখানে Array.newInstance() মেথড ব্যবহার করে একটি নতুন String টাইপের অ্যারে তৈরি করা হচ্ছে:

import java.lang.reflect.Array;

public class ReflectionArrayExample {
    public static void main(String[] args) {
        // String টাইপের একটি অ্যারে তৈরি
        Class<?> componentType = String.class;
        int length = 5;
        
        // Array.newInstance() দিয়ে অ্যারে তৈরি
        Object array = Array.newInstance(componentType, length);
        
        // অ্যারের মান সেট করা
        Array.set(array, 0, "Hello");
        Array.set(array, 1, "Reflection");
        Array.set(array, 2, "Array");
        Array.set(array, 3, "Example");
        Array.set(array, 4, "Java");

        // অ্যারের মান দেখানো
        for (int i = 0; i < length; i++) {
            System.out.println(Array.get(array, i));
        }
    }
}

কোড বিশ্লেষণ:

  1. Class<?> componentType = String.class;:
    • componentType হল অ্যারের উপাদান (component) টাইপ, এখানে String.class টাইপটি ব্যবহৃত হয়েছে।
  2. Object array = Array.newInstance(componentType, length);:
    • Array.newInstance() মেথড ব্যবহার করে, আমরা String টাইপের একটি অ্যারে তৈরি করছি যার আকার ৫।
  3. Array.set(array, index, value);:
    • Array.set() মেথড ব্যবহার করে অ্যারের নির্দিষ্ট ইনডেক্সে মান সেট করা হচ্ছে।
  4. Array.get(array, index);:
    • অ্যারের মানটি রিড করার জন্য Array.get() মেথড ব্যবহার করা হচ্ছে।

উদাহরণ 2: ইন্টিজার টাইপের অ্যারে তৈরি করা

নিচে Integer টাইপের একটি অ্যারে তৈরি করার উদাহরণ দেওয়া হল:

import java.lang.reflect.Array;

public class ReflectionIntegerArrayExample {
    public static void main(String[] args) {
        // Integer টাইপের একটি অ্যারে তৈরি
        Class<?> componentType = Integer.class;
        int length = 3;
        
        // Array.newInstance() দিয়ে Integer টাইপের অ্যারে তৈরি
        Object array = Array.newInstance(componentType, length);

        // অ্যারের মান সেট করা
        Array.set(array, 0, 10);
        Array.set(array, 1, 20);
        Array.set(array, 2, 30);

        // অ্যারের মান দেখানো
        for (int i = 0; i < length; i++) {
            System.out.println(Array.get(array, i));
        }
    }
}

কোড বিশ্লেষণ:

  1. Class<?> componentType = Integer.class;:
    • এখানে componentType হিসেবে Integer.class ব্যবহার করা হয়েছে, যার মানে অ্যারের উপাদান (component) Integer টাইপ হবে।
  2. Object array = Array.newInstance(componentType, length);:
    • Array.newInstance() মেথড ব্যবহার করে একটি নতুন Integer টাইপের অ্যারে তৈরি করা হচ্ছে যার আকার ৩।
  3. Array.set(array, index, value);:
    • Array.set() মেথড ব্যবহার করে অ্যারের নির্দিষ্ট ইনডেক্সে মান দেওয়া হচ্ছে।
  4. Array.get(array, index);:
    • Array.get() মেথড ব্যবহার করে অ্যারের নির্দিষ্ট ইনডেক্স থেকে মান রিড করা হচ্ছে।

উদাহরণ 3: মাল্টি-ডাইমেনশনাল অ্যারে তৈরি করা

Array.newInstance() মেথডের সাহায্যে মাল্টি-ডাইমেনশনাল অ্যারেও তৈরি করা সম্ভব। নিচে একটি উদাহরণ দেওয়া হল যেখানে 2D অ্যারে তৈরি করা হয়েছে:

import java.lang.reflect.Array;

public class Reflection2DArrayExample {
    public static void main(String[] args) {
        // Integer টাইপের একটি 2D অ্যারে তৈরি
        Class<?> componentType = Integer.class;
        int rows = 3;
        int cols = 3;
        
        // 2D অ্যারে তৈরি
        Object array = Array.newInstance(componentType, rows, cols);

        // অ্যারের মান সেট করা
        Array.set(Array.get(array, 0), 0, 1);
        Array.set(Array.get(array, 0), 1, 2);
        Array.set(Array.get(array, 0), 2, 3);
        Array.set(Array.get(array, 1), 0, 4);
        Array.set(Array.get(array, 1), 1, 5);
        Array.set(Array.get(array, 1), 2, 6);
        Array.set(Array.get(array, 2), 0, 7);
        Array.set(Array.get(array, 2), 1, 8);
        Array.set(Array.get(array, 2), 2, 9);

        // অ্যারের মান দেখানো
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                System.out.print(Array.get(Array.get(array, i), j) + " ");
            }
            System.out.println();
        }
    }
}

কোড বিশ্লেষণ:

  1. Object array = Array.newInstance(componentType, rows, cols);:
    • এই লাইনটি একটি 2D অ্যারে তৈরি করে যার প্রাথমিক টাইপ Integer এবং আকার ৩x৩।
  2. Array.set(Array.get(array, i), j, value);:
    • Array.get(array, i) ব্যবহার করে প্রথম ডাইমেনশন (row) থেকে অ্যাক্সেস করা হচ্ছে এবং তারপর Array.set() ব্যবহার করে তার ভ্যালু পরিবর্তন করা হচ্ছে।

Array.newInstance() এর সুবিধা এবং ব্যবহার:

  1. ডাইনামিক অ্যারে তৈরি:
    • Array.newInstance() দিয়ে আপনি রানটাইমে নতুন টাইপ এবং আকারের অ্যারে তৈরি করতে পারেন, যা সাধারণভাবে new কিওয়ার্ড দিয়ে সম্ভব নয়।
  2. টেমপ্লেটড ক্লাসের অ্যারে তৈরি:
    • এটি ব্যবহার করে আপনি এমন অ্যারে তৈরি করতে পারেন যেগুলোর টাইপ রানটাইমে নির্ধারিত হয়, যেমন জেনেরিক টাইপের অ্যারে।
  3. মাল্টি-ডাইমেনশনাল অ্যারে:
    • Array.newInstance() মেথড দিয়ে মাল্টি-ডাইমেনশনাল অ্যারেও তৈরি করা সম্ভব।

Array.newInstance() মেথড Java Reflection API এর একটি শক্তিশালী ফিচার যা আপনাকে রানটাইমে ডাইনামিকভাবে অ্যারে তৈরি করতে সাহায্য করে। এটি বিশেষ করে তখন উপকারী যখন আপনি অ্যারের টাইপ এবং সাইজ জানেন না এবং এগুলো রানটাইমে নির্ধারণ করতে হয়।

Content added By
Promotion

Are you sure to start over?

Loading...