Java注解

      網友投稿 660 2025-03-31

      Java注解

      好嘛,好嘛,又到了傷腦筋的時候啦!

      講真的,之前Java這三大高級特性,我一聽名字就感覺到了一股殺氣!哇,泛型,反射,注解,這都是什么高級詞匯,一聽就很難學! 后來學了后發現,嗯,沒感覺錯,確實是很難學!哈哈哈(笑啥笑,難學還挺開心)

      今天我們的主角是注解。好家伙,注解。啥東西啊,看著就沒思路。 不要慌,問題不大

      我們先看看比較官方的解釋:Java 注解用于為 Java 代碼提供元數據。作為元數據,注解不直接影響你的代碼執行,但也有一些類型的注解實際上可以用于這一目的。

      看看官方解釋,再結合字面意思,咦,貌似有點內個意思了哈。

      上面清晰的寫著,注解不直接影響你的代碼執行,意味著什么,意味著我們從字面理解的意思,是差不多對的。 好,總結一下,注解就是:聲明我們的代碼中的方法,屬性,類,接口等作用的,而且和注釋不同的一個東西。

      而且而且,貌似你可以這么理解,我給你一個注解,像不像我給你扣了一個大帽子。

      比如說你初學Java,進了一個Java群,你剛好會了一個新知識,這時候有一個比較活躍的群友問了這個問題,你洋洋灑灑的說了出來,頓時這個人就給你套了個大佬的帽子,因為他是活躍群友,所有你一冒頭他就喊你是大佬,這樣你在別人眼里也就是大佬了。

      而注解就相當于是我給代碼套了個帽子,讓別的程序員一下就能看出來他是干嘛的 。

      1.常規注解

      1.代碼中的注解

      Java代碼中的注解就是這種形式的

      在代碼上面有個 : @Xxxx 的東西

      應該見過,也可能沒見過,不過就是這個東西,這是用法

      2.創造注解

      那么怎么創造一個注解呢

      其實特別簡單,格式如下:

      ?

      @Interface Xxx{}

      ?

      沒了,就這么簡單

      那么我們就動動小手 創建一個我們能的注解吧

      //定義一個 什么都沒有的 注解 @interface Isthis{ }

      這就定義好我們自己的注解了

      3.使用注解

      上面我們已經定義了一個注解,那么怎么使用呢

      只需要將我們自己定義的注解(名詞)放在我們需要注解(動詞)的代碼上面,就像這樣

      //定義一個 什么都沒有的 注解 @interface Isthis{ } //使用你的注解 @Isthis class Good{ }

      我們定義了一個空的注解,也定義了一個空的類,并將我們的注解用在了我們的類上面

      當然,這樣很不直觀,那么我們就實例化一個對象來看看

      public class Ex5_8 { public static void main(String[] args) { Good a = new Good(); System.out.println(a); } }

      運行結果為:

      在這里插入圖片描述

      然后再將注解去掉看看

      public class Ex5_8 { public static void main(String[] args) { Good a = new Good(); System.out.println(a); } } class Good{ }

      運行結果為:

      在這里插入圖片描述

      是一樣的,說明注釋對我們的代碼沒有影響

      2.元注解

      什么是元注解?能給注解進行注解的注解。

      哈哈哈,是不是有點套。沒事,這樣看:

      元注解是能給注解(我們之前定義的)進行注解(注釋解釋)的注解(名詞,注解)。

      這就很清晰了吧。

      我們的元注解有以下幾種,下面我將帶領大家看看。

      在這里插入圖片描述

      1. @Retention

      Retention的意思是保留。根據見名知意的理解,其實這個元注解的作用其實就是注解的保留時間,也就是這個注解能保留到什么時候。

      注解也有方法,我們來看看這個保留注解的方法

      SOURCE

      被這個屬性注解的注解,只在源代碼中能看到,起作用

      用法是這樣:

      @Retention(RetentionPolicy.SOURCE) @Interface Text{}

      CLASS

      被這個屬性注解的注解,在class文件中也可以看見,但是不會被我們的Java虛擬機加載

      用法:

      @Retention(RetentionPolicy.CLASS) @interface Text{ }

      RUNTIME

      會被Java虛擬機加載

      @Retention(RetentionPolicy.RUNTIME) @interface Text{ }

      2. @Documented

      中文意思是:備有證明文件的。好吧,這個意思就不是那么清晰了

      這個元注解的作用是將我們的注解加載到javadoc中,這個javadoc是我們的Java程序中所有的文檔注釋(/** */)產生的注視文檔。

      而這個元注解就是可以讓我們的注解也進入這個文檔。

      3. @Target

      中文意思是:目標。

      作用是:告訴注解,你該用到哪里,就是說被這個注解的注解可以注解什么類型的數據

      大白話:我告訴你,你只能給類進行注解,那你就只能給類注解,放別的地方就會報錯。

      具體使用如下:

      可以給注解進行注解,是不是想到了元注解,沒錯,可以看看元注解的源碼,都被這個注解過

      @Target(ElementType.ANNOTATION_TYPE) @interface Text{ }

      可以讓注解給構造方法注解

      @Target(ElementType.CONSTRUCTOR) @interface Text{ }

      可以讓注解給屬性進行注解

      @Target(ElementType.FIELD) @interface Text{ }

      可以讓注解給局部變量進行注解

      @Target(ElementType.LOCAL_VARIABLE) @interface Text{ }

      可以讓注解給方法進行注解

      @Target(ElementType.METHOD) @interface Text{ }

      可以讓注解給包進行注解

      @Target(ElementType.PACKAGE) @interface Text{ }

      可以讓注解給方法變量進行注解

      @Target(ElementType.PARAMETER) @interface Text{ }

      4. @Inherited

      中文意思:繼承

      被此元注解 注解(動詞) 的注解(名詞),如果注解了一個類A,類A被類B繼承,那么,類B同樣繼承類A的注解。

      @Inherited @interface Text{ } @Text class Good{ } class Good_son extends Good{}

      這里的Good_son類雖然看起來沒有被注解,但是因為Inherited元注解的存在,他也繼承了Good的注解@Text.

      3.標準注解

      標準注解就是直接作用在別的數據上的 什么是數據?變量,方法,類,接口,枚舉。。。

      1. @Override

      中文意思:重寫

      保證Override重寫聲明的正確性。

      是不是很眼熟,沒錯就是了類里面的重寫父類方法,這個注解的作用就是用在子類需要重寫的時候。

      如果父類沒有你要重寫的方法,就會出錯誤。這里我們故意出錯看看錯誤

      class Good{ void say(){} void speak(){} } class Good_son extends Good{ @Override void say(){} @Override void spea(){} }

      idea的方便之處,會爆紅:

      在這里插入圖片描述

      會提示錯誤,并給出解決方法

      在這里插入圖片描述

      意思就是,你的父類沒這個方法,下面的上移就是講這個方法在父類實現。

      改正確,就不會爆紅:

      在這里插入圖片描述

      2. @Deprecated

      中文意思:不宜用

      就是這個方法已經不適合使用了

      public class Ex5_8 { public static void main(String[] args) { Good a = new Good(); a.say(); } } class Good{ @Deprecated void say(){} void speak(){} }

      這樣看代碼,不太直觀,還是放idea的截圖吧

      say方法被@Deprecated注解,在實例化調用的時候,就會有刪除線,意思就是,這個方法已經不適合使用了。

      4.注解的屬性

      注解也有屬性,和類一樣。

      用法是這樣

      @interface Text{ int id(); String value(); } @Text(id=1, value="s") class Good{ void say(){} void speak(){} }

      定義注解屬性的時候,類型 屬性名();

      屬性可以有默認值,默認值需要用default關鍵字傳遞

      類型 屬性名 default 值

      @interface Text{ int id() default 0; String value(); } @Text(id=1, value="s") class Good{ void say(){} void speak(){} }

      Java注解

      好嘛,好嘛,又到了傷腦筋的時候啦!

      講真的,之前Java這三大高級特性,我一聽名字就感覺到了一股殺氣!哇,泛型,反射,注解,這都是什么高級詞匯,一聽就很難學! 后來學了后發現,嗯,沒感覺錯,確實是很難學!哈哈哈(笑啥笑,難學還挺開心)

      今天我們的主角是注解。好家伙,注解。啥東西啊,看著就沒思路。 不要慌,問題不大

      我們先看看比較官方的解釋:Java 注解用于為 Java 代碼提供元數據。作為元數據,注解不直接影響你的代碼執行,但也有一些類型的注解實際上可以用于這一目的。

      看看官方解釋,再結合字面意思,咦,貌似有點內個意思了哈。

      上面清晰的寫著,注解不直接影響你的代碼執行,意味著什么,意味著我們從字面理解的意思,是差不多對的。 好,總結一下,注解就是:聲明我們的代碼中的方法,屬性,類,接口等作用的,而且和注釋不同的一個東西。

      而且而且,貌似你可以這么理解,我給你一個注解,像不像我給你扣了一個大帽子。

      比如說你初學Java,進了一個Java群,你剛好會了一個新知識,這時候有一個比較活躍的群友問了這個問題,你洋洋灑灑的說了出來,頓時這個人就給你套了個大佬的帽子,因為他是活躍群友,所有你一冒頭他就喊你是大佬,這樣你在別人眼里也就是大佬了。

      而注解就相當于是我給代碼套了個帽子,讓別的程序員一下就能看出來他是干嘛的 。

      1.常規注解

      Java代碼中的注解就是這種形式的

      在代碼上面有個 : @Xxxx 的東西

      應該見過,也可能沒見過,不過就是這個東西,這是用法

      那么怎么創造一個注解呢

      其實特別簡單,格式如下:

      @Interface Xxx{}

      沒了,就這么簡單

      那么我們就動動小手 創建一個我們能的注解吧

      //定義一個 什么都沒有的 注解 @interface Isthis{ }

      這就定義好我們自己的注解了

      上面我們已經定義了一個注解,那么怎么使用呢

      只需要將我們自己定義的注解(名詞)放在我們需要注解(動詞)的代碼上面,就像這樣

      //定義一個 什么都沒有的 注解 @interface Isthis{ } //使用你的注解 @Isthis class Good{ }

      我們定義了一個空的注解,也定義了一個空的類,并將我們的注解用在了我們的類上面

      當然,這樣很不直觀,那么我們就實例化一個對象來看看

      public class Ex5_8 { public static void main(String[] args) { Good a = new Good(); System.out.println(a); } }

      運行結果為:

      然后再將注解去掉看看

      public class Ex5_8 { public static void main(String[] args) { Good a = new Good(); System.out.println(a); } } class Good{ }

      運行結果為:

      是一樣的,說明注釋對我們的代碼沒有影響

      2.元注解

      什么是元注解?能給注解進行注解的注解。

      哈哈哈,是不是有點套。沒事,這樣看:

      元注解是能給注解(我們之前定義的)進行注解(注釋解釋)的注解(名詞,注解)。

      這就很清晰了吧。

      我們的元注解有以下幾種,下面我將帶領大家看看。

      Retention的意思是保留。根據見名知意的理解,其實這個元注解的作用其實就是注解的保留時間,也就是這個注解能保留到什么時候。

      注解也有方法,我們來看看這個保留注解的方法

      SOURCE

      被這個屬性注解的注解,只在源代碼中能看到,起作用

      用法是這樣:

      @Retention(RetentionPolicy.SOURCE) @Interface Text{}

      CLASS

      被這個屬性注解的注解,在class文件中也可以看見,但是不會被我們的Java虛擬機加載

      用法:

      @Retention(RetentionPolicy.CLASS) @interface Text{ }

      RUNTIME

      會被Java虛擬機加載

      @Retention(RetentionPolicy.RUNTIME) @interface Text{ }

      中文意思是:備有證明文件的。好吧,這個意思就不是那么清晰了

      這個元注解的作用是將我們的注解加載到javadoc中,這個javadoc是我們的Java程序中所有的文檔注釋(/** */)產生的注視文檔。

      而這個元注解就是可以讓我們的注解也進入這個文檔。

      中文意思是:目標。

      作用是:告訴注解,你該用到哪里,就是說被這個注解的注解可以注解什么類型的數據

      大白話:我告訴你,你只能給類進行注解,那你就只能給類注解,放別的地方就會報錯。

      具體使用如下:

      可以給注解進行注解,是不是想到了元注解,沒錯,可以看看元注解的源碼,都被這個注解過

      @Target(ElementType.ANNOTATION_TYPE) @interface Text{ }

      可以讓注解給構造方法注解

      @Target(ElementType.CONSTRUCTOR) @interface Text{ }

      可以讓注解給屬性進行注解

      @Target(ElementType.FIELD) @interface Text{ }

      可以讓注解給局部變量進行注解

      @Target(ElementType.LOCAL_VARIABLE) @interface Text{ }

      可以讓注解給方法進行注解

      Java注解

      @Target(ElementType.METHOD) @interface Text{ }

      可以讓注解給包進行注解

      @Target(ElementType.PACKAGE) @interface Text{ }

      可以讓注解給方法變量進行注解

      @Target(ElementType.PARAMETER) @interface Text{ }

      中文意思:繼承

      被此元注解 注解(動詞) 的注解(名詞),如果注解了一個類A,類A被類B繼承,那么,類B同樣繼承類A的注解。

      @Inherited @interface Text{ } @Text class Good{ } class Good_son extends Good{}

      這里的Good_son類雖然看起來沒有被注解,但是因為Inherited元注解的存在,他也繼承了Good的注解@Text.

      3.標準注解

      標準注解就是直接作用在別的數據上的 什么是數據?變量,方法,類,接口,枚舉。。。

      中文意思:重寫

      保證Override重寫聲明的正確性。

      是不是很眼熟,沒錯就是了類里面的重寫父類方法,這個注解的作用就是用在子類需要重寫的時候。

      如果父類沒有你要重寫的方法,就會出錯誤。這里我們故意出錯看看錯誤

      class Good{ void say(){} void speak(){} } class Good_son extends Good{ @Override void say(){} @Override void spea(){} }

      idea的方便之處,會爆紅:

      會提示錯誤,并給出解決方法

      意思就是,你的父類沒這個方法,下面的上移就是講這個方法在父類實現。

      改正確,就不會爆紅:

      中文意思:不宜用

      就是這個方法已經不適合使用了

      public class Ex5_8 { public static void main(String[] args) { Good a = new Good(); a.say(); } } class Good{ @Deprecated void say(){} void speak(){} }

      這樣看代碼,不太直觀,還是放idea的截圖吧

      say方法被@Deprecated注解,在實例化調用的時候,就會有刪除線,意思就是,這個方法已經不適合使用了。

      4.注解的屬性

      注解也有屬性,和類一樣。

      用法是這樣

      @interface Text{ int id(); String value(); } @Text(id=1, value="s") class Good{ void say(){} void speak(){} }

      定義注解屬性的時候,類型 屬性名();

      屬性可以有默認值,默認值需要用default關鍵字傳遞

      類型 屬性名 default 值

      @interface Text{ int id() default 0; String value(); } @Text(id=1, value="s") class Good{ void say(){} void speak(){} }

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:2022年傳統企業將刮“低代碼”風暴?
      下一篇:Java中的注解
      相關文章
      亚洲美女激情视频| 亚洲国产高清美女在线观看| 亚洲日韩看片无码电影| 亚洲一区二区三区在线| 亚洲综合无码一区二区三区| 亚洲视频在线观看视频| 亚洲黄色在线观看视频| 亚洲国产精品第一区二区| 亚洲av综合avav中文| 久久精品亚洲综合专区| 久久精品国产精品亚洲蜜月| 亚洲成av人片在线观看无码不卡| 国产亚洲高清不卡在线观看| 亚洲人成网77777亚洲色| 亚洲精品无码国产| 久久精品国产69国产精品亚洲| 国产亚洲精品a在线无码| 亚洲精品无码MV在线观看 | 亚洲综合av一区二区三区| 国产亚洲福利在线视频| 日韩亚洲国产综合高清| 亚洲码和欧洲码一码二码三码| 亚洲精品无码专区在线播放| 亚洲成av人无码亚洲成av人| 女bbbbxxxx另类亚洲| 亚洲精品成人片在线观看| 中文字幕亚洲综合久久菠萝蜜| 久久亚洲国产精品五月天婷| 亚洲毛片αv无线播放一区| 国产v亚洲v天堂无码网站| 亚洲三级电影网址| 亚洲H在线播放在线观看H| 亚洲熟妇成人精品一区| 亚洲AV无码一区二区三区电影 | 激情小说亚洲图片| 亚洲色偷拍区另类无码专区| 亚洲人成伊人成综合网久久久| 亚洲va中文字幕无码久久不卡| 亚洲综合久久综合激情久久| 亚洲国产精品人久久电影| 亚洲日韩中文字幕一区|