برنامهای به زبان جاوا بنویسید که نام یک کلاس را از کاربر دریافت کند و با استفاده از Reflection لیست تمام فیلدها و متدهای (اعم از عمومی و خصوصی) آن را همراه با نوع و مدیفایرهایشان نمایش دهد.
9.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:18 0.0
با استفاده از java.lang.reflect (کلاسهای Class، Method، Field و ابزار Modifier) میتوانید با Class.forName کلاس را بارگذاری کنید و سپس getDeclaredFields و getDeclaredMethods را برای گرفتن اعضای خصوصی و عمومی فراخوانی کنید؛ برای هر Field و Method نام، نوع بازگشتی/نوع، پارامترها و مدیفایرها را چاپ کنید. نکات: برای دسترسی به فیلدهای خصوصی میتوان setAccessible(true) را استفاده کرد و خطاهای ممکن مثل ClassNotFoundException و IllegalAccessException را با try-catch مدیریت کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
وقتی با فیلدها و متدهای خصوصی کار میکنید، باید با setAccessible(true) دسترسی پیدا کنید و به تفاوت بین getDeclaredFields/getDeclaredMethods و getFields/getMethods توجه کنید. getDeclaredFields/getDeclaredMethods فقط اعضای تعریفشده در کلاس را برمیگردانند و اعضای والد را دربر نمیگیرند، بنابراین برای فهرست کامل از ارثبری باید از حلقه روی کلاسهای والد استفاده کنید. برای نمایش دقیق، نوع بازگشتی متد و نوع پارامترها را همراه با modifiers چاپ کنید و خطاهای کلاسبارگذاری (ClassNotFoundException) و دسترسی (IllegalAccessException) را با پیام مناسب مدیریت کنید. همچنین خوب است به کاربر نشان بدهید که دسترسی به فیلدهای خصوصی ممکن است به دلیل سیاستهای امنیتی محدود باشد و در محیطهای تولیدی رفتار متفاوتی داشته باشد.
گزارش