日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/18 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @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

總結

以上是生活随笔為你收集整理的@Deprecated 注解 (@Documented 、@Retention、@Target)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。