قسمت 1. من به طور خلاصه در مورد حاشیه نویسی از نوع SOURCE و CLASS نوشته ام. برای اینکه در قسمت دوم گم نشوید و "سوء تفاهم" خود را کمی گسترش دهید این مطلب ارزش خواندن دارد. اولین باری که در وظایف اینجا حاشیه نویسی را دیدم به نوعی به آنها توجه زیادی نکردم. اینجا و آنجا @Override وجود دارد، اما IDEA آن را اضافه میکند، بنابراین من فکر کردم که باید اینطور باشد. با گذشت زمان، متوجه شدم که همه چیز بسیار عمیق تر است. همانطور که مطالعه می کنید، حاشیه نویسی ممکن است تا حدودی بی فایده اما ضروری به نظر برسد. شما نمی دانید چرا وجود دارند یا چه می کنند. شما چند مقاله خواندید که میگفتند، "خیلی عالی است که ما الان حاشیهنویسی داریم، همه چیز خیلی ساده شده است." اما من قبلاً نمی دانستم اوضاع چگونه است و نمی فهمیدم که اکنون همه چیز راحت تر است. حالا من می دانم و می خواهم کمی به اشتراک بگذارم. 3 نوع حاشیه نویسی (RetentionPolicy) وجود دارد:
بومی - من هرگز این را ندیدم و هرگز از آن استفاده نکردم. من فکر می کنم این یک حاشیه نویسی نسبتاً نادر است، زیرا زمانی استفاده می شود که شما نیاز به اجرای کد به زبان "بومی" دیگری دارید. من تلاش کردم و نتوانستم ذکر واضحی از آن پیدا کنم.
SuppressWarnings - این حاشیهنویسی اغلب به این صورت استفاده میشود: @SuppressWarnings ("علامتگذاری نشده"). برای سرکوب هشدارهایی که قبلاً از آنها مطلع هستید استفاده می شود. مثال قبلی هشدارهای مربوط به تبدیلهای نوع علامتنشده را سرکوب میکند. باز هم، این تنها استفاده ای است که من با آن مواجه شده ام.
ایجاد شده - من در حال حاضر به دلیل تکلیفی که در آن باید کلاس هایی را از فایل های XSD ایجاد کنم، با این حاشیه نویسی مواجه می شوم. این 3 حاشیه نویسی کاملاً خاص هستند و به احتمال زیاد در حال حاضر برای شما جالب نیستند. آخری را شرح خواهم داد.
لغو - شما دائما از آن استفاده می کنید و کار بسیار مفیدی انجام می دهد. هنگام نادیده گرفتن یک روش، اشتباه کردن بدون کمک IDEA آسان است. چه اشتباهات تایپی یا اشتباهات ساده، اشتباهات رخ می دهد. این حاشیهنویسی مطمئن میشود که متد در کلاس والد با روش (توضیحات) ما مطابقت دارد. این تضمین می کند که روش به جای اضافه شدن، لغو می شود. هنگام بازسازی کد، روش والد ممکن است حذف یا تغییر یابد. باز هم، این حاشیه نویسی یک خطا را نشان می دهد. بدون آن، روش ما به سادگی اضافه می شود. حوصله سر بر؟ من می گویم بله. هیچ چیز مفیدی برای جمع آوری از این مقاله وجود ندارد. تقریباً همه چیز (90٪) در اینجا چیزی را توصیف می کند که هرگز از آن استفاده نخواهید کرد یا به ندرت. 10 درصد باقیمانده در حال سلام کردن و توصیف حاشیه نویسی @Override هستند که در نگاه اول بی فایده است. با این حال، من فکر می کنم در قسمت دوم مقاله جالب تر خواهد بود. در مورد حاشیه نویسی RUNTIME بحث خواهد شد - آنها در هنگام اجرا با کد تعامل می کنند و جادوی سیاه انجام می دهند. حاشیه نویسی ها قسمت 2. لومبوک
- منبع - حاشیه نویسی برای کامپایلر
- کلاس - اطلاعات از حاشیه نویسی در بایت کد نوشته می شود اما در زمان اجرا در دسترس نیست. آنها می گویند که کتابخانه استاندارد دارای حاشیه نویسی های زیادی از این نوع است که اکنون برای سازگاری با عقب نگه داشته شده است. این برای کارهای بسیار خاص استفاده می شود.
- پرسش و پاسخ در StackOverflow
- RUNTIME - این حاشیه نویسی ها محبوب ترین هستند. آنها در حین اجرای کد استفاده می شوند.
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- Native - متغیری با این حاشیه ممکن است به کد بومی اشاره داشته باشد.
- SuppressWarnings - این حاشیه نویسی هشدارهای مختلف کامپایلر را سرکوب می کند.
- ایجاد شده - این حاشیه نویسی کد منبع تولید شده را علامت گذاری می کند.
- لغو - این حاشیه نویسی نادیده گرفتن روش را بررسی می کند.
GO TO FULL VERSION