ব্যক্তিগত ক্ষেত্রগুলিতে অ্যাক্সেস পাওয়ার জন্য আপনার এটিকে শ্রেণীর ঘোষিত ক্ষেত্রগুলি থেকে নেওয়া এবং তারপরে এগুলি অ্যাক্সেসযোগ্য করা দরকার:
Field f = obj.getClass().getDeclaredField("stuffIWant"); //NoSuchFieldException
f.setAccessible(true);
Hashtable iWantThis = (Hashtable) f.get(obj); //IllegalAccessException
সম্পাদনা করুন : যেমন অ্যাপারকিনস মন্তব্য করেছেন , উভয় ক্ষেত্রে ক্ষেত্র অ্যাক্সেস করা, এটিকে অ্যাক্সেসযোগ্য হিসাবে সেট করা এবং মানটি পুনরুদ্ধার করা ছুঁড়ে ফেলতে পারে Exception
, যদিও কেবলমাত্র পরীক্ষিত আপনাকে সচেতন ব্যতিক্রমগুলি উপরে মন্তব্য করা হয়েছে।
NoSuchFieldException
আপনি একটি নাম যা ঘোষিত ক্ষেত্র মিলা করা হয়নি দ্বারা একটি ক্ষেত্র চাইলেন নিক্ষেপ করা হবে।
obj.getClass().getDeclaredField("misspelled"); //will throw NoSuchFieldException
IllegalAccessException
, ফেলে দেওয়া হতো ক্ষেত্র প্রবেশযোগ্য ছিল না (উদাহরণস্বরূপ যদি এটা ব্যক্তিগত এবং হাতছাড়া মাধ্যমে অ্যাক্সেসযোগ্য তৈরি করা হয়েছেf.setAccessible(true)
লাইন।
RuntimeException
গুলি যা নিক্ষিপ্ত হতে পারে পারেন হয় SecurityException
গুলি (যদি জেভিএম এর SecurityManager
আপনি যদি একটি ক্ষেত্রের অভিগম্যতা পরিবর্তন করার অনুমতি দেয় না), অথবা IllegalArgumentException
গুলি, যদি আপনি ক্ষেত্রের ক্লাস ধরনের কোনো বস্তুর উপর ক্ষেত্র চেষ্টা করুন এবং অ্যাক্সেস করুন:
f.get("BOB"); //will throw IllegalArgumentException, as String is of the wrong type