یک انوتیشن سفارشی @RunMe بسازید که برای متدها کاربرد دارد و یک کلاس runner بنویسید که با استفاده از Reflection همهٔ متدهای دارای این انوتیشن را در یک نمونهٔ مشخص پیدا و اجرا کند.

14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:28

0.0

ابتدا انوتیشن را با @Retention(RetentionPolicy.RUNTIME) و @Target(ElementType.METHOD) تعریف کنید تا در زمان اجرا قابل مشاهده باشد، سپس یک یا چند متد نمونه را با این انوتیشن علامت‌گذاری کنید. برای اجرا از API بازتاب جاوا (java.lang.reflect) استفاده کنید: با Class.getDeclaredMethods() همهٔ متدها را بگیرید، با method.isAnnotationPresent(RunMe.class) آن‌هایی که انوتیشن دارند را فیلتر کنید و با method.invoke(obj) آن‌ها را اجرا کنید. نکات: برای متدهای خصوصی از method.setAccessible(true) استفاده کنید، خطاهای InvocationTargetException و IllegalAccessException را هندل کنید و فرض کنید متدها بدون پارامترباشند یا برای پارامترها راهکاری ساده بیاورید.

توسط پژوهشگر در 198 روز قبل ساعت 03:28
دسته بندی ها: Java Java for beginner
sara در 198 روز قبل ساعت 03:29

مطمئن شوید انوتیشن را با @Retention(RetentionPolicy.RUNTIME) و @Target(ElementType.METHOD) تعریف کنید تا در زمان اجرا قابل‌تشخیص باشد. در Runner با Class.getDeclaredMethods() و method.isAnnotationPresent(RunMe.class) متدها را فیلتر کنید و برای متدهای خصوصی قبل از invoke مقدار method.setAccessible(true) را تنظیم نمایید. خطاهای InvocationTargetException و IllegalAccessException را لاگ یا هندل کنید و اگر متدها پارامتر دارند باید مکانیزمی برای تزریق آرگومان‌ها یا بررسی امضاء پیاده‌سازی کنید. همچنین به ترتیب اجرای متدها و پیامدهای جانبی (state mutation) و مسائل امنیتی مانند SecurityManager یا اجرای کد ناشناخته توجه داشته باشید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری