第一部分。我非常簡短地介紹了 SOURCE 和 CLASS 類型的註解。值得一讀,以免在第二部分迷失並開始更多“誤解” =) 這裡肯定至少有一個單字是你認識的!
當我第一次在這裡看到他們遇到問題時,我不知何故沒有註意到他們。嗯,Override 掛了,它是 IDEA 寫的,所以就應該是這樣的。隨著時間的推移,我意識到一切都更深了。當你學習的時候,註釋看起來似乎沒什麼用,但卻是必要的。你不知道他們為什麼要這樣做。我想我讀了幾篇文章,他們說“現在我們有了註釋真是太好了,一切都變得如此簡單。” 但我不知道以前是怎麼樣的,也不明白現在容易多了。現在我知道了,我想告訴你一些。 註釋有 3 種類型(RetentionPolicy):
原生- 從未見過也從未使用過。我認為這是一個相當罕見的註釋,因為...... 如果他們需要以另一種「本機」語言運行程式碼,他們就會使用它。我試圖找到她的明確參考資料,但找不到。
SuppressWarnings - 通常以 @SuppressWarnings("unchecked") 的形式使用。用於抑制您知道的警告。上面的範例抑制了有關強制轉換未經檢查的類型的警告。再說一遍,我只遇到過這種形式和使用。
生成- 當任務要求我從 xsd 檔案生成類別時,我遇到了它。這 3 個註釋非常具體,您目前很可能不感興趣。我將描述最後一個。
覆蓋- 你一直使用它,它做了一件非常有用的事情。重寫方法時很容易出錯,除非 IDEA 這樣做。有錯字或只是錯誤。這個註解將確保父類別中的方法與我們的(標記的)方法相同。這保證了我們該方法將被重寫而不是添加到其中。重構程式碼時,可以刪除或更改該方法。同樣,註釋將向您指示錯誤。沒有它,我們的方法就簡單地完成了。
無聊的?我想說的是,這篇文章沒有太多有用之處。其中幾乎所有內容(90%)都是關於您不會使用或會使用但很少使用的東西的故事。剩下的10%是hello和Override註解的描述,乍看沒什麼用。嗯,我認為文章的第二部分會更有趣。會有RUNTIME註釋,它們與程式碼即時互動並創造黑魔法。 註釋。第二部分。龍目島。
- SOURCE – 編譯器註釋
- CLASS – 來自註釋的資料將寫入字節碼,但在操作期間不可用。他們寫道,標準庫中的許多註釋都使用這種類型,現在由於向後相容性,他們保留它。用於非常具體的任務。
- StackOverflow 上的問答
- RUNTIME – 最受歡迎,在程式碼運行時使用。
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generate.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