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));
}
}
}
কোড বিশ্লেষণ:
Class<?> componentType = String.class;:componentTypeহল অ্যারের উপাদান (component) টাইপ, এখানেString.classটাইপটি ব্যবহৃত হয়েছে।
Object array = Array.newInstance(componentType, length);:Array.newInstance()মেথড ব্যবহার করে, আমরাStringটাইপের একটি অ্যারে তৈরি করছি যার আকার ৫।
Array.set(array, index, value);:Array.set()মেথড ব্যবহার করে অ্যারের নির্দিষ্ট ইনডেক্সে মান সেট করা হচ্ছে।
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));
}
}
}
কোড বিশ্লেষণ:
Class<?> componentType = Integer.class;:- এখানে
componentTypeহিসেবেInteger.classব্যবহার করা হয়েছে, যার মানে অ্যারের উপাদান (component)Integerটাইপ হবে।
- এখানে
Object array = Array.newInstance(componentType, length);:Array.newInstance()মেথড ব্যবহার করে একটি নতুনIntegerটাইপের অ্যারে তৈরি করা হচ্ছে যার আকার ৩।
Array.set(array, index, value);:Array.set()মেথড ব্যবহার করে অ্যারের নির্দিষ্ট ইনডেক্সে মান দেওয়া হচ্ছে।
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();
}
}
}
কোড বিশ্লেষণ:
Object array = Array.newInstance(componentType, rows, cols);:- এই লাইনটি একটি 2D অ্যারে তৈরি করে যার প্রাথমিক টাইপ
Integerএবং আকার ৩x৩।
- এই লাইনটি একটি 2D অ্যারে তৈরি করে যার প্রাথমিক টাইপ
Array.set(Array.get(array, i), j, value);:Array.get(array, i)ব্যবহার করে প্রথম ডাইমেনশন (row) থেকে অ্যাক্সেস করা হচ্ছে এবং তারপরArray.set()ব্যবহার করে তার ভ্যালু পরিবর্তন করা হচ্ছে।
Array.newInstance() এর সুবিধা এবং ব্যবহার:
- ডাইনামিক অ্যারে তৈরি:
Array.newInstance()দিয়ে আপনি রানটাইমে নতুন টাইপ এবং আকারের অ্যারে তৈরি করতে পারেন, যা সাধারণভাবেnewকিওয়ার্ড দিয়ে সম্ভব নয়।
- টেমপ্লেটড ক্লাসের অ্যারে তৈরি:
- এটি ব্যবহার করে আপনি এমন অ্যারে তৈরি করতে পারেন যেগুলোর টাইপ রানটাইমে নির্ধারিত হয়, যেমন জেনেরিক টাইপের অ্যারে।
- মাল্টি-ডাইমেনশনাল অ্যারে:
Array.newInstance()মেথড দিয়ে মাল্টি-ডাইমেনশনাল অ্যারেও তৈরি করা সম্ভব।
Array.newInstance() মেথড Java Reflection API এর একটি শক্তিশালী ফিচার যা আপনাকে রানটাইমে ডাইনামিকভাবে অ্যারে তৈরি করতে সাহায্য করে। এটি বিশেষ করে তখন উপকারী যখন আপনি অ্যারের টাইপ এবং সাইজ জানেন না এবং এগুলো রানটাইমে নির্ধারণ করতে হয়।
Read more