getClass() পদ্ধতি, ক্লাস অবজেক্ট, এবং প্রতিফলনের একটি ভূমিকা - 1

"হাই, অ্যামিগো!"

"এখন মূল ইভেন্টের সময়। আমরা ক্লাস ক্লাসের সাথে পরিচিত হব এবং প্রতিফলনে স্পর্শ করব।
আপনি সম্ভবত ইতিমধ্যেই বুঝতে পেরেছেন যে, জাভাতে সবকিছুই একটি অবজেক্ট। এবং একটি বস্তুর কী প্রয়োজন? প্রতিটি বস্তুর কী সংজ্ঞায়িত করা আছে এটা কি সব সম্পর্কে?"

"একটি শ্রেণী!"

"ঠিক! ভাল হয়েছে। প্রতিটি বস্তুর একটি ক্লাস আছে। কিন্তু বস্তুতে ফিরে আসা... কিছু বস্তু সম্পূর্ণরূপে একটি সত্তা ধারণ করে, অন্যরা কেবল এটি পরিচালনা করতে সহায়তা করে।"

"এই পরবর্তী প্রকারের মধ্যে ফাইলআউটপুটস্ট্রিম এবং থ্রেড অন্তর্ভুক্ত রয়েছে । আপনি যখন একটি থ্রেড অবজেক্ট তৈরি করেন, তখন একটি নতুন থ্রেড তৈরি হয় না। থ্রেডটি জাভা ভার্চুয়াল মেশিন দ্বারা start() পদ্ধতি কল করার পরে তৈরি করা হয়। এই অবজেক্টটি সহজভাবে প্রক্রিয়া পরিচালনা করতে সহায়তা করে।"

" FileOutputStream- এর সাথে একই : ফাইলটি ডিস্কে সংরক্ষণ করা হয়, এবং OS স্টোরেজ এবং অ্যাক্সেস পরিচালনা করে। কিন্তু আমরা আবার জাভা ভার্চুয়াল মেশিনের সাহায্যে ফাইল অবজেক্টের মাধ্যমে এটির সাথে ইন্টারঅ্যাক্ট করতে পারি।"

"হ্যাঁ, আমি ইতিমধ্যে বুঝতে পেরেছি।"

"সুতরাং, ক্লাসের সাথে ইন্টারঅ্যাক্ট করার জন্য ক্লাস নামে একটি বিশেষ ক্লাস আছে।"

"এটা অনুমান করা কঠিন ছিল না।"

"হ্যাঁ। প্রতিবার জাভা ভার্চুয়াল মেশিন মেমরিতে একটি নতুন ক্লাস লোড করে, এটি একটি ক্লাস অবজেক্ট তৈরি করে, যা আপনি লোড করা ক্লাস সম্পর্কে নির্দিষ্ট তথ্য পেতে ব্যবহার করতে পারেন।"

"প্রতিটি ক্লাস এবং অবজেক্ট একটি « ক্লাস অবজেক্ট » এর সাথে যুক্ত ।"

উদাহরণ বর্ণনা
Class clazz = Integer.class;
পূর্ণসংখ্যা শ্রেণীর ক্লাস অবজেক্ট পায়।
Class clazz = int.class;
int ক্লাসের ক্লাস অবজেক্ট পায়।
Class clazz = "123".getClass();
একটি স্ট্রিং অবজেক্টের ক্লাস অবজেক্ট পায়।
Class clazz = new Object().getClass();
অবজেক্ট অবজেক্টের ক্লাস অবজেক্ট পায়।

"বাহ! কত আকর্ষণীয়!"

"আপনার কি মনে আছে যে ক্লাস শব্দটি জাভাতে একটি কীওয়ার্ড এবং একটি পরিবর্তনশীল নাম হিসাবে ব্যবহার করা যাবে না?"

"ওহ হ্যাঁ, আমি জানি, আমি জানি। আমি শুধু ভুলে গেছি।"

"আপনি কি ইতিমধ্যেই কোথাও ক্লাস অবজেক্ট ব্যবহার করেছেন?"

"হ্যাঁ, আমরা এটি ব্যবহার করেছি যখন আমরা সমান পদ্ধতির আমাদের নিজস্ব বাস্তবায়ন লিখেছিলাম।"

"হ্যাঁ, বস্তুর একই ক্লাস আছে কিনা তা পরীক্ষা করতে আপনি getClass() পদ্ধতি ব্যবহার করতে পারেন।"

"এবং আপনি এই বস্তুর সাথে কি করতে পারেন?"

"আচ্ছা, অনেক কিছু:"

জাভা কোড বর্ণনা
Class s = int.class;
String name = s.getName();
ক্লাসের নাম পায়।
Class s = Class.forName("java.lang.String");
নামে ক্লাস পায়।
Object o1 = String.valueOf(1);
Object o2 = 123 + "T";
o1.getClass() == o2.getClass();
বস্তুর ক্লাস তুলনা করে।

"আকর্ষণীয়, কিন্তু আমি যতটা ভেবেছিলাম ততটা শান্ত নয়।"

"আপনি এটিকে শান্ত করতে চান? এখানে প্রতিফলনও আছে ।  প্রতিফলনটি দুর্দান্ত।"

" প্রতিফলন কি ?"

" প্রতিফলন হল একটি ক্লাসের নিজের সম্পর্কে তথ্য পাওয়ার ক্ষমতা। জাভাতে বিশেষ ক্লাস রয়েছে:  ফিল্ড এবং মেথড , যা ক্লাসের জন্য ক্লাস ক্লাসের অনুরূপ । যেমন ক্লাস অবজেক্ট আপনাকে একটি ক্লাস সম্পর্কে তথ্য পেতে দেয়, ফিল্ড অবজেক্টগুলি একটি ক্ষেত্র সম্পর্কে তথ্য প্রদান করে। , এবং মেথড অবজেক্ট একটি পদ্ধতি সম্পর্কে তথ্য প্রদান করে। এবং আপনি তাদের সাথে কি করতে পারেন তা দেখুন:"

জাভা কোড বর্ণনা
Class[] interfaces = List.class.getInterfaces();
লিস্ট ক্লাসের ইন্টারফেসের জন্য ক্লাস অবজেক্টের একটি তালিকা পায়
Class parent = String.class.getSuperclass();
স্ট্রিং ক্লাসের প্যারেন্ট ক্লাসের ক্লাস অবজেক্ট পায়
Method[] methods = List.class.getMethods();
তালিকা শ্রেণীর পদ্ধতির একটি তালিকা পায়
String s = String.class.newInstance();
একটি নতুন স্ট্রিং তৈরি করে
String s = String.class.newInstance();
Method m = String.class.getMethod("length");
int length = (int) m.invoke(s)
স্ট্রিং ক্লাসের দৈর্ঘ্য পদ্ধতি পায় এবং স্ট্রিং s এ কল করে

"বাহ! এখন যে সত্যিই শান্ত!"