قسمت اول. من به طور خلاصه در مورد حاشیه نویسی با انواع SOURCE و CLASS نوشتم. ارزش خواندن را دارد تا در قسمت دوم گم نشوید و کمی بیشتر شروع به "سوء تفاهم" کنید =) قطعاً حداقل یک کلمه در اینجا وجود دارد که می دانید!
اولین باری که آنها را در مشکلات اینجا دیدم، به نوعی متوجه آنها نشدم. خب، Override در حال پاتوق است، توسط IDEA نوشته شده است، بنابراین باید اینطور باشد. با گذشت زمان، متوجه شدم که همه چیز بسیار عمیق تر است. در حالی که شما در حال مطالعه هستید، حاشیه نویسی چیزی بی فایده، اما ضروری به نظر می رسد. نمی دانی چرا این کار را می کنند. فکر می کنم چند مقاله خواندم، آنها گفتند "چقدر خوب است که اکنون حاشیه نویسی داریم، همه چیز خیلی ساده شده است." اما قبلاً نمی دانستم چگونه است و نمی فهمیدم که اکنون راحت تر است. حالا می دانم و می خواهم کمی به شما بگویم. 3 نوع حاشیه نویسی وجود دارد (RetentionPolicy):
بومی - هرگز دیده نشده و استفاده نشده است. من فکر می کنم این یک حاشیه نویسی نسبتا نادر است، زیرا ... اگر نیاز به اجرای کد به زبان «بومی» دیگری داشته باشند، از آن استفاده می کنند. سعی کردم اشاره ای واضح به او پیدا کنم، اما نتوانستم.
SuppressWarnings - اغلب به شکل @SuppressWarnings استفاده میشود ("علامتگذاری نشده"). برای سرکوب هشدارهایی که از آنها آگاه هستید استفاده می شود. مثال بالا هشدارهای مربوط به ارسال انواع علامتنخورده را لغو میکند. باز هم من فقط در این شکل و استفاده با آن مواجه شده ام.
Generated - اکنون زمانی که این وظیفه از من می خواهد کلاس هایی را از فایل های xsd تولید کنم، با آن برخورد کردم. این 3 حاشیه نویسی کاملاً خاص هستند و به احتمال زیاد در حال حاضر برای شما جالب نیستند. آخری را شرح می دهم.
لغو - شما همیشه از آن استفاده می کنید و کار بسیار مفیدی انجام می دهد. هنگام نادیده گرفتن یک روش، اشتباه کردن آسان است، مگر اینکه IDEA این کار را انجام دهد. غلط املایی یا فقط اشتباه وجود دارد. این حاشیه نویسی تضمین می کند که متد در کلاس والد با روش (برچسب) ما یکسان است. این به ما تضمین میکند که روش لغو میشود و به آن اضافه نمیشود. هنگام بازسازی کد، روش را می توان حذف یا تغییر داد. باز هم، حاشیه نویسی خطا را به شما نشان می دهد. بدون آن، روش ما به سادگی تکمیل می شود.
حوصله سر بر؟ میتوانم بگویم بله، این مقاله چندان مفید نیست. تقریباً همه چیز در آن (90٪) در مورد چیزی است که شما از آن استفاده نخواهید کرد یا استفاده خواهید کرد، اما بسیار به ندرت. 10% باقیمانده سلام و شرح حاشیه نویسی Override است که در نگاه اول بی فایده است. خوب، فکر می کنم قسمت دوم مقاله جالب تر خواهد بود. حاشیه نویسی RUNTIME وجود خواهد داشت، و آنها با کد در زمان واقعی تعامل دارند و جادوی سیاه ایجاد می کنند. حاشیه نویسی ها بخش دوم. لومبوک
- منبع - حاشیه نویسی کامپایلر
- CLASS - داده های حاشیه نویسی در بایت کد نوشته می شود اما در طول عملیات در دسترس نخواهد بود. آنها می نویسند که بسیاری از حاشیه نویسی ها در کتابخانه استاندارد از این نوع استفاده می کنند و اکنون آن را به دلیل سازگاری با عقب نگه می دارند. برای کارهای بسیار خاص استفاده می شود.
- پرسش و پاسخ در 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 - هشدارهای مختلف کامپایلر را سرکوب می کند.
- Generated – کد منبع تولید شده را علامت گذاری می کند.
- Override - بررسی برای لغو روش.
GO TO FULL VERSION