@Deprecated 注解 (@Documented?、@Retention、@Target)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

// 在看 Unsafe 類源碼時看到一個注解:@Deprecated,似曾相識...

@Deprecated?

用在類或者方法上,表示對應代碼不推薦使用、已經過時。

通常是因為它是危險的,或者是因為存在更好的替代方案。編譯器在非棄用代碼中使用或重寫棄用的程序元素時發出警告。

調用時可能會出現刪除線。

補充:

@Documented?

有此注解的內容將由javadoc和類似工具記錄。如果用文檔對類型聲明進行了注釋,則其注釋將成為注釋元素的公共API的一部分。

@Retention

@Retention 是一個元注解,即注解上的注解。
它只有一個 RetentionPolicy 類型的屬性,RetentionPolicy是一個枚舉,共有3個值:SOURCE、CLASS、RUNTIME。

這 3 個值決定了被@Retention所注解的注解(即@Deprecated )被保留的方式。

1、RetentionPolicy.SOURCE:注解只保留在源文件,當Java文件編譯成class文件的時候,注解被遺棄;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加載class文件時候被遺棄,這是默認的生命周期;
3、RetentionPolicy.RUNTIME:注解不僅被保存到class文件中,jvm加載class文件之后,仍然存在;
這3個生命周期分別對應于:Java源文件(.java文件) ---> .class文件 ---> 內存中的字節碼。
那怎么來選擇合適的注解生命周期呢?
首先要明確生命周期長度 SOURCE < CLASS < RUNTIME ,所以前者能作用的地方后者一定也能作用。
一般如果需要在運行時去動態獲取注解信息,那只能用 RUNTIME 注解,比如@Deprecated使用RUNTIME注解
如果要在編譯時進行一些預處理操作,比如生成一些輔助代碼(如 ButterKnife),就用 CLASS注解;
如果只是做一些檢查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。

以上 9 行出自:https://www.cnblogs.com/liufei1983/p/9987084.html

?

@Target

限制注解可以應用于哪種Java元素類型。只有一個枚舉數組類型的屬性:value。

用法如:

@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
數組中的值為注解的作用目標。在此,即:CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE。
目標范圍枚舉值有:接口、類、枚舉、注解、字段、枚舉的常量、方法、方法參數、構造函數、局部變量、包等。
public enum ElementType {/** Class, interface (including annotation type), or enum declaration */TYPE,/** Field declaration (includes enum constants) */FIELD,/** Method declaration */METHOD,/** Formal parameter declaration */PARAMETER,/** Constructor declaration */CONSTRUCTOR,/** Local variable declaration */LOCAL_VARIABLE,/** Annotation type declaration */ANNOTATION_TYPE,/** Package declaration */PACKAGE,/*** Type parameter declaration** @since 1.8*/TYPE_PARAMETER,/*** Use of a type** @since 1.8*/TYPE_USE
}

?

參考:

?https://blog.csdn.net/fengcai0123/article/details/90544338

https://www.cnblogs.com/liufei1983/p/9987084.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447485.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447485.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447485.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++的未來和指針

本文由 伯樂在線 - 周昌鴻 翻譯自 Meeting C。歡迎加入 技術翻譯小組。轉載請參見文章末尾處的要求。上周Meeting C2013結束后&#xff0c;我對C思考了很多&#xff0c;有一些內容和指針有關。在C 11中只對指針進行了小量的更新&#xff08;引入了nullptr&#xff09;&#xf…

Java魔法類:Unsafe應用解析

Unsafe是位于sun.misc包下的一個類&#xff0c;主要提供一些用于執行低級別、不安全操作的方法&#xff0c;如直接訪問系統內存資源、自主管理內存資源等&#xff0c;這些方法在提升Java運行效率、增強Java語言底層資源操作能力方面起到了很大的作用。但由于Unsafe類使Java語言…

AMD迎接變革:加速OpenCL的未來

摘要&#xff1a;AMD在北京中關村皇冠假日酒店舉辦了以"迎接變革&#xff1a;加速進入OpenCL 的未來"為主題的技術培訓。AMD Firepro顯卡資深產品經理JC、OpenCL資深講師陸教授、謝博士與大家探討OpenCL技術將如何引領變革、鑄造計算新紀元。 4月11日&#xff0c;AM…

JAVA中神奇的雙刃劍--Unsafe

參考資料&#xff1a; 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Java魔法類&#xff1a;sun.misc.Unsafe在openjdk8下看Unsafe源碼 Unsafe介紹 在Oracle的Jdk8無法獲取到sun.misc…

讓AMD在中國發聲 APU14技術創新大會首次在華召開

今日&#xff0c;AMD一年一度的開發者峰會“APU2014”在北京拉開帷幕&#xff0c;這也是AMD首次在美國之外的城市舉辦該活動。AMD全球副總裁、大中華區董事總經理潘曉明表示&#xff0c;大中華區是AMD重要的戰略區域&#xff0c;AMD希望通過本次活動在中國制造巨大的聲音&#…

Python已成美國頂尖高校中最受歡迎的入門編程語言

在最近的一份調查中顯示&#xff0c;美國top高校中&#xff0c;Python已經成為教授計算機科學入門課程方面最受歡迎的語言。其中Top10 CS系中有8所使用Python&#xff0c;Top39 CS系中有24所&#xff0c;在入門課程中教授Python&#xff0c;可見其實用性的認可度很高。在我寫下…

源碼閱讀 AtomicInteger

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 AtomicInteger 原子整數 可以原子更新的int值。 用于原子遞增計數器等應用程序中&#xff0c;不能用作java.lang.Integer的替換。 擴展…

A飯福利,AMD Mantle API獲眾多游戲開發商青睞!

摘要&#xff1a;Videocardz整理了一份2014年—2015年支持AMD Mantle游戲列表&#xff0c;并公布了游戲開發商及游戲引擎的名稱。已發布且支持Mantle的游戲主要有《戰地4》、《神偷4》、《植物大戰僵尸&#xff1a;花園戰爭》以及《狙擊精英3》這四款。 現如今&#xff0c;越來…

linux 安裝 maven 、解決:bash: mvn: command not found

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、安裝 wget 命令: yum -y install wget 2、下載maven安裝包 wget http://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/a…

軟件工程師必學的9件事

本文是html5tricks原創翻譯&#xff0c;轉載請看清文末的轉載要求&#xff0c;謝謝合作&#xff01; 三年前&#xff0c;我還在巴塞羅那的神經科學實驗室工作&#xff0c;忙著研究腦電波、教授心理學上的認知系統課程。而今天&#xff0c;我以設計和寫軟件為生。 你或許會滿頭…

Linux 的 chmod 命令,對一個目錄及其子目錄所有文件添加權限

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 對一個目錄及其子目錄所有文件添加權限 命令&#xff1a; chmod 777 -R ./html 給予html目錄下可讀可寫可操作權限。 或者 chmod -R…

Linux 下壓縮與解壓.zip 和 .rar

1)對于.ziplinux下提供了zip和unzip程序&#xff0c;zip是壓縮程序&#xff0c;unzip是解壓程序。它們的參數選項很多&#xff0c;可用命令zip -help和unzip -help查看&#xff0c;這里只做簡單介紹&#xff0c;舉例說明一下其用法&#xff1a;# zip test.zip test.jpg test.pn…

優秀的程序員VS糟糕的程序員

優秀的程序員和一般的程序員差別在哪里&#xff1f;怎么才能成為優秀的程序員&#xff1f;我們選擇了這個職業就要把他做好&#xff01; 優秀的程序員&#xff1a; 1、邏輯能力很強&#xff0c;這也是解決問題的關鍵。 2、分析能力。可以很好的解決復雜問題。 3、事情做得專…

圖解 Java 常用數據結構

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 最近在整理數據結構方面的知識, 系統化看了下Java中常用數據結構, 突發奇想用動畫來繪制數據流轉過程. 主要基于jdk8, 可能會有些特性與…

程序員生存定律--使人生永動的勢能

程序員生存定律這系列的目錄在這里&#xff1a;程序員生存定律--目錄 喜歡從頭瞄的&#xff0c;可以移步。 ------------------------------------------------------------------------------- 這篇說的是精神&#xff0c;比較務虛&#xff0c;不感興趣的可以略過。 在國內有…

int 和 Integer 的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、Integer是int的包裝類&#xff0c;int則是java的一種基本數據類型 2、Integer變量必須實例化后才能使用&#xff0c;而int變量不需要…

度量術語之二:應用類和開發類生產率(實際度量案例)

一個令人震驚的事實是連生產率這種常見度量數據都沒有一個簡單的定義。連我們日常經常用到的公式&#xff1a;生產率工作產品/工作量&#xff08;工作產品可以是代碼行&#xff0c;功能點&#xff0c;也可以是任何可以計數的東西&#xff0c;比如文檔頁數&#xff09;都是錯誤的…

注解 @ModelAttribute 運用詳細介紹

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。1.ModelAttribute注釋方法   例子&#xff08;1&#xff09;&#xff0c;&#xff08;2&#xff09;&#xff0c;&#xff08;3&#x…

編程語言 IDE 對比

IDE是集成開發環境的英文縮寫&#xff0c;所謂集成開發環境&#xff0c;就是將你在開發過程中所需要的工具或功能集成到了一起&#xff0c;比如代碼編寫、分析、編譯、調試等功能&#xff0c;從而最大化地提高開發者的工作效率。每種編程語言都有一些特定的IDE&#xff0c;本文…

強制更新 maven 緩存

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 mvn dependency:purge-local-repository