第 1 部分。我已經非常簡要地介紹了 SOURCE 和 CLASS 類型的註釋。這篇值得一讀,免得在第二部分迷路,擴大你的“誤解”一點=)我保證你至少會知道一個詞!
我第一次在這裡的任務中看到註釋時,我並沒有太在意它們。到處都是@Override,但 IDEA 添加了它,所以我認為它必須是那樣的。隨著時間的推移,我意識到一切都更加深刻。在您學習的過程中,註釋可能看起來有些無用,但卻是必要的。你不知道它們為什麼存在或它們做什麼。您已經閱讀了幾篇文章,它們說:“我們現在有了註釋真是太好了,一切都變得如此簡單。” 但我不知道以前是怎樣的,也不明白現在的事情容易多了。現在我確實知道並想分享一點。 有 3 種類型的 (RetentionPolicy) 註解:
Native——我從未見過也從未使用過。我認為這是一個相當罕見的註釋,因為當您需要以另一種“本機”語言運行代碼時會用到它。我試過但沒有找到明確的提及。
SuppressWarnings — 此註解通常像這樣使用:@SuppressWarnings("unchecked")。它用於抑制您已經知道的警告。前面的示例禁止顯示有關未經檢查的類型轉換的警告。同樣,這是我遇到的唯一用法。
已生成——由於我必須從 XSD 文件生成類的任務,我現在遇到了這個註釋。這 3 個註釋非常具體,目前您很可能不感興趣。我將描述最後一個。
覆蓋——你經常使用它,它做了一些非常有用的事情。重寫方法時,沒有IDEA的幫助很容易出錯。無論是拼寫錯誤還是簡單的錯誤,錯誤都會發生。該註釋將確保父類中的方法與我們的(註釋的)方法相匹配。這確保該方法將被覆蓋而不是添加。重構代碼時,可能會刪除或更改父方法。同樣,此註釋將指示錯誤。沒有它,我們的方法將被簡單地添加。 無聊的?我會說是的。從這篇文章中收集到的幫助不大。這裡幾乎所有內容 (90%) 都描述了您永遠不會使用或很少使用的東西。剩下的 10% 是在跟@Override 註解打招呼和描述,乍一看沒什麼用。也就是說,我認為文章的第二部分會更有趣。將討論運行時註釋——它們在執行期間與代碼交互並施展黑魔法。 註釋。第 2 部分。龍目島

- SOURCE - 編譯器的註解
- CLASS——註釋中的信息將以字節碼形式寫入,但在運行時不可用。他們說標準庫有很多這種類型的註解,現在為了向後兼容保留了下來。這用於非常具體的任務。
- StackOverflow 上的問答
- RUNTIME——這些註釋是最受歡迎的。它們在代碼執行時使用。
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/註解/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