Java注解Annotaton詳解
1、三種基本的Annotaton
@Override : 限定某個(gè)方法,是重寫父類方法 , 該注解只能用于方法
@Deprecated : 用于表示某個(gè)程序元素 ( 類 , 方法等 ) 已過時(shí)
@SuppressWarnings : 抑制編譯器警告
@Override
class father{ public void fly(){} } class son extends father{ @Override public void fly() { super.fly(); } }
解讀
@Override表示son重寫了fly方法
細(xì)節(jié)
如果沒有@Override還是會(huì)重寫fly方法
class father{ public void fly(){} } class son extends father{ public void fly() { super.fly(); } }
寫了@Override注解,編譯器就會(huì)去檢查方法是否重寫了父類方法,如果重寫了,則編譯通過。若沒有重寫,則編譯錯(cuò)誤。
@Override只能修飾方法,不能修飾其他類,包,屬性等等
//@Override底層代碼 @Target(ElementType.METHOD)//ElementType.METHOD說明@Override只能修飾方法 @Retention(RetentionPolicy.SOURCE) public @interface Override { }
@Deprecated
public class Deprecatedtext { public static void main(String[] args) { father father1 = new father(); father1.fly(); } } @Deprecated class father{ @Deprecated public void fly(){} }
解讀
@Deprecated表示某個(gè)程序元素(類,方法等)已過時(shí),會(huì)通過單詞中間的橫線提醒。表示不建議使用。
效果
細(xì)節(jié)可以修飾方法,類,包,參數(shù)等等
//@Deprecated底層代碼 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})//說明Deprecated能修飾方法,類,包,參數(shù)等等 public @interface Deprecated { }
2.@Deprecated的作用可以起到做新舊版本的兼容過渡
@SuppressWarnings
@SuppressWarnings("all") class father{ public void fly(){} }
解讀
@SuppressWarnings注解可以用來抑制警告信息{""}寫入你希望抑制的警告信息
效果
細(xì)節(jié)
1.@SuppressWarnings作用范圍和你放置的位置相關(guān)
public class Enumtext { @SuppressWarnings("all")//作用范圍在main方法 public static void main(String[] args) { father father1 = new father(); father1.fly(); } } @SuppressWarnings("all")//作用范圍在father類 class father{ public void fly(){} }
指定警告類型有
all,抑制所有警告
boxing,抑制與封裝/拆裝作業(yè)相關(guān)的警告
cast,抑制與強(qiáng)制轉(zhuǎn)型作業(yè)相關(guān)的警告
dep-ann,抑制與淘汰注釋相關(guān)的警告
deprecation,抑制與淘汰的相關(guān)警告
fallthrough,抑制與switch陳述式中遺漏break相關(guān)的警告
finally,抑制與未傳回finally區(qū)塊相關(guān)的警告
hiding,抑制與隱藏變數(shù)的區(qū)域變數(shù)相關(guān)的警告
incomplete-switch,抑制與switch陳述式(enum case)中遺漏項(xiàng)目相關(guān)的警告
javadoc,抑制與javadoc相關(guān)的警告
nls,抑制與非nls字串文字相關(guān)的警告
null,抑制與空值分析相關(guān)的警告
rawtypes,抑制與使用raw類型相關(guān)的警告
resource,抑制與使用Closeable類型的資源相關(guān)的警告
restriction,抑制與使用不建議或禁止參照相關(guān)的警告
serial,抑制與可序列化的類別遺漏serialVersionUID欄位相關(guān)的警告
static-access,抑制與靜態(tài)存取不正確相關(guān)的警告
static-method,抑制與可能宣告為static的方法相關(guān)的警告
super,抑制與置換方法相關(guān)但不含super呼叫的警告
synthetic-access,抑制與內(nèi)部類別的存取未最佳化相關(guān)的警告
sync-override,抑制因?yàn)橹脫Q同步方法而遺漏同步化的警告
unchecked,抑制與未檢查的作業(yè)相關(guān)的警告
unqualified-field-access,抑制與欄位存取不合格相關(guān)的警告
unused,抑制與未用的程式碼及停用的程式碼相關(guān)的警告
元注解
- Retention 指定注解的作用范圍,三種SOURCE,CLASS,RUNTIME
- Target 指定注解可以在哪些地方使用
- Documented 指定該注解是否會(huì)在javadoc體現(xiàn)
- Inherited 子類會(huì)繼承父類注解
Retention
- RetentionPolicy.SOURCE :編譯器使用后,直接丟棄注釋
- RetentionPolicy.CLASS: 編譯器把注解記錄在class文件中,當(dāng)運(yùn)行java時(shí)JVM不會(huì)保留注釋
- RetentionPolicy.PUNTIME:編譯器把注解記錄在class文件中,當(dāng)運(yùn)行java時(shí)JVM保留注釋
Retention案例
@Override底層(IDEA進(jìn)入底層的快捷鍵為Ctrl+B)
@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE)//表示@Override在編譯器使用后,直接丟棄注釋 public @interface Override { }
Target
Target的值
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) // 1.CONSTRUCTOR:用于描述構(gòu)造器 2.FIELD:用于描述域 3.LOCAL_VARIABLE:用于描述局部變量 4.METHOD:用于描述方法 5.PACKAGE:用于描述包 6.PARAMETER:用于描述參數(shù) 7.TYPE:用于描述類、接口(包括注解類型) 或enum聲明
Target案例
@Deprecated底層
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})//表示@Documented在這些地方可以寫注解 public @interface Deprecated { }
Documented
Documented案例
@Deprecated底層
@Documented//@Deprecated代碼會(huì)被保存到生產(chǎn)的文檔中 @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public @interface Deprecated { }
Inherited
被它修飾的Annotation將具有繼承性,如果某個(gè)類使用了被@Inherited修飾的Annotation,則其子類將自動(dòng)具有該注解
到此這篇關(guān)于Java注解Annotaton 的文章就介紹到這了,更多相關(guān)Java注解Annotaton 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
20秒教你學(xué)會(huì)java?List函數(shù)排序操作示例
這篇文章主要為大家介紹了20秒教你學(xué)會(huì)List函數(shù)排序操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09基于mybatis一對(duì)多查詢內(nèi)層排序的問題
這篇文章主要介紹了基于mybatis一對(duì)多查詢內(nèi)層排序的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01java Socket實(shí)現(xiàn)網(wǎng)頁版在線聊天
這篇文章主要為大家詳細(xì)介紹了java Socket實(shí)現(xiàn)網(wǎng)頁版在線聊天具體代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05Spring Boot 配置和使用多線程池的實(shí)現(xiàn)
這篇文章主要介紹了Spring Boot 配置和使用多線程池的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06Java數(shù)據(jù)庫連接_jdbc-odbc橋連接方式(詳解)
下面小編就為大家?guī)硪黄狫ava數(shù)據(jù)庫連接_jdbc-odbc橋連接方式(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別
這篇文章主要介紹了InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別的相關(guān)資料,需要的朋友可以參考下2015-12-12