কোন Class, Method, অথবা Field এর Modifiers চেক করা (Modifier.isPublic(), isPrivate())

Java Technologies - জাভা রিফ্লেক্ট প্যাকেজ (Java.reflect Package) - Modifiers এবং Access Control
133

Java রিফ্লেকশন API এর মাধ্যমে আপনি একটি ক্লাস, মেথড বা ফিল্ডের modifiers চেক করতে পারেন। Modifiers হলো Java কোডের বিভিন্ন বৈশিষ্ট্য যেমন public, private, protected, static, final, ইত্যাদি, যা ক্লাস, মেথড অথবা ফিল্ডের অ্যাক্সেস নিয়ন্ত্রণ করে এবং এর আচরণ নির্ধারণ করে। রিফ্লেকশন ব্যবহার করে, আপনি একটি ক্লাস বা মেথডের modifiers চেক করতে পারেন এবং সেই অনুযায়ী নির্দিষ্ট কাজ করতে পারেন।

Modifier Class:

Java তে Modifier ক্লাসটি একটি utility class যা বিভিন্ন modifier চেক করার জন্য স্ট্যাটিক মেথড প্রদান করে। এই ক্লাসের মেথডগুলি আপনি Class, Method, এবং Field এর modifiers চেক করতে ব্যবহার করতে পারেন।

Modifier ক্লাসের গুরুত্বপূর্ণ মেথডগুলো:

  1. Modifier.isPublic(int mod):
    • এটি চেক করে যে, মডিফায়ারটি public কিনা।
    • উদাহরণ: Modifier.isPublic(modifiers)
  2. Modifier.isPrivate(int mod):
    • এটি চেক করে যে, মডিফায়ারটি private কিনা।
    • উদাহরণ: Modifier.isPrivate(modifiers)
  3. Modifier.isProtected(int mod):
    • এটি চেক করে যে, মডিফায়ারটি protected কিনা।
    • উদাহরণ: Modifier.isProtected(modifiers)
  4. Modifier.isStatic(int mod):
    • এটি চেক করে যে, মডিফায়ারটি static কিনা।
    • উদাহরণ: Modifier.isStatic(modifiers)
  5. Modifier.isFinal(int mod):
    • এটি চেক করে যে, মডিফায়ারটি final কিনা।
    • উদাহরণ: Modifier.isFinal(modifiers)
  6. Modifier.isAbstract(int mod):
    • এটি চেক করে যে, মডিফায়ারটি abstract কিনা।
    • উদাহরণ: Modifier.isAbstract(modifiers)
  7. Modifier.isSynchronized(int mod):
    • এটি চেক করে যে, মডিফায়ারটি synchronized কিনা।
    • উদাহরণ: Modifier.isSynchronized(modifiers)

Modifiers চেক করার উদাহরণ:

ধরা যাক, আপনি একটি ক্লাস, মেথড এবং ফিল্ডের মডিফায়ার চেক করতে চান।

কোড উদাহরণ:

import java.lang.reflect.*;

class Example {
    public int publicField;
    private String privateField;
    protected static final double CONSTANT = 3.14;

    public void publicMethod() {
        System.out.println("Public method");
    }

    private void privateMethod() {
        System.out.println("Private method");
    }

    protected static void staticMethod() {
        System.out.println("Static method");
    }

    public static void main(String[] args) throws Exception {
        Class<?> cls = Example.class;

        // ক্লাসের মডিফায়ার চেক করা
        int classModifiers = cls.getModifiers();
        System.out.println("Class is public: " + Modifier.isPublic(classModifiers));

        // ফিল্ডের মডিফায়ার চেক করা
        Field publicField = cls.getDeclaredField("publicField");
        int fieldModifiers = publicField.getModifiers();
        System.out.println("publicField is private: " + Modifier.isPrivate(fieldModifiers));
        System.out.println("publicField is public: " + Modifier.isPublic(fieldModifiers));

        Field constantField = cls.getDeclaredField("CONSTANT");
        fieldModifiers = constantField.getModifiers();
        System.out.println("CONSTANT is static: " + Modifier.isStatic(fieldModifiers));
        System.out.println("CONSTANT is final: " + Modifier.isFinal(fieldModifiers));

        // মেথডের মডিফায়ার চেক করা
        Method publicMethod = cls.getDeclaredMethod("publicMethod");
        int methodModifiers = publicMethod.getModifiers();
        System.out.println("publicMethod is public: " + Modifier.isPublic(methodModifiers));

        Method privateMethod = cls.getDeclaredMethod("privateMethod");
        methodModifiers = privateMethod.getModifiers();
        System.out.println("privateMethod is private: " + Modifier.isPrivate(methodModifiers));

        Method staticMethod = cls.getDeclaredMethod("staticMethod");
        methodModifiers = staticMethod.getModifiers();
        System.out.println("staticMethod is static: " + Modifier.isStatic(methodModifiers));
    }
}

কোড ব্যাখ্যা:

  1. cls.getModifiers():
    • এই মেথডটি ক্লাসের মডিফায়ার ফিরিয়ে দেয়, যেমন public, abstract, final ইত্যাদি। আমরা এখানে Modifier.isPublic() ব্যবহার করে চেক করেছি ক্লাসটি public কিনা।
  2. publicField.getModifiers():
    • getModifiers() মেথডটি একটি ফিল্ডের মডিফায়ার প্রদান করে, যার মাধ্যমে আপনি Modifier.isPrivate() এবং Modifier.isPublic() ব্যবহার করে চেক করতে পারেন যে ফিল্ডটি private অথবা public কিনা।
  3. publicMethod.getModifiers():
    • মেথডের মডিফায়ার চেক করার জন্য এই মেথড ব্যবহার করা হয়েছে। উদাহরণস্বরূপ, Modifier.isPublic() ব্যবহার করে আমরা চেক করেছি মেথডটি public কিনা।
  4. constantField.getModifiers():
    • static এবং final মডিফায়ার চেক করার জন্য Modifier.isStatic() এবং Modifier.isFinal() ব্যবহার করা হয়েছে।

আউটপুট:

Class is public: true
publicField is private: false
publicField is public: true
CONSTANT is static: true
CONSTANT is final: true
publicMethod is public: true
privateMethod is private: true
staticMethod is static: true

Modifier.isPublic() এবং Modifier.isPrivate() এর সুবিধা:

  1. ক্লাস, মেথড, ফিল্ডের অ্যাক্সেস চেক:
    • রিফ্লেকশন ব্যবহার করে আপনি যেকোনো ক্লাস, মেথড বা ফিল্ডের মডিফায়ার চেক করতে পারেন এবং সেই অনুযায়ী কার্যকরী সিদ্ধান্ত নিতে পারেন, যেমন অ্যাক্সেস কন্ট্রোল, সিকিউরিটি প্রক্রিয়া, ইত্যাদি।
  2. ডাইনামিক কোডিং:
    • Modifier ক্লাসের সাহায্যে আপনি ডাইনামিকভাবে মেথড বা ফিল্ডের মডিফায়ার চেক করতে পারেন, যা আপনাকে আরো ফ্লেক্সিবল এবং ডাইনামিক কোড লিখতে সহায়তা করে।
  3. AOP (Aspect-Oriented Programming):
    • রিফ্লেকশন ব্যবহার করে আপনি স্পেসিফিক মেথড বা ফিল্ডের মডিফায়ার চেক করে এএসপেক্ট ভিত্তিক প্রোগ্রামিং (AOP) বাস্তবায়ন করতে পারেন।

Java রিফ্লেকশন API এর মাধ্যমে Modifier ক্লাসের মেথডগুলি ব্যবহার করে আপনি যে কোন ক্লাস, মেথড বা ফিল্ডের মডিফায়ার চেক করতে পারেন। এটি আপনাকে কোডের আরও ফ্লেক্সিবল এবং ডাইনামিক আচরণ তৈরি করতে সাহায্য করে, বিশেষ করে যখন আপনি জানেন না যে কোন ক্লাসের মেথড বা ফিল্ডগুলি পরিবর্তিত হবে বা তা কোথায় ব্যবহৃত হবে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...