国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

玩轉Java注解:元注解、內置注解、自定義注解的原理和實現

開發 后端
Java 注解(Annotation)又稱 Java 標注,是 JDK5.0 引入的一種注釋機制。重點:和 Javadoc 不同,Java 標注可以通過反射獲取標注內容。

前言

Java 注解(Annotation)又稱 Java 標注,是 JDK5.0 引入的一種注釋機制。重點:和 Javadoc 不同,Java 標注可以通過反射獲取標注內容。

大話空話不用說太多,簡而言之,在編譯器生成類文件時,標注 可以被嵌入到字節碼中。Java 虛擬機可以保留標注內容,在運行時可以獲取到標注內容 。當然它也支持自定義 Java 標注。反射+注解,是不是感覺Java變成一種動態語言?哈哈哈!

我覺得注解可以分為三個部分來講:內置注解,元注解,自定義注解。

一、內置注解

1、@Override 重寫

概念:檢查該方法是否是重寫方法。如果發現其父類,或者是引用的接口中并沒有該方法時,會報編譯錯誤。 

  1. //這個extends 不要在意,我寫上去只是為了更加方便直觀的去理解,Object是萬物之源,不寫也會默認是其子類,不用解釋過多吧?  
  2. public class Annotation1 extends Object{  
  3.     @Override  
  4.     public String toString (){  
  5.         return "我是重新定義過的toString方法";  
  6.     }  

@Override(重寫),這個大家應該很熟悉,重寫父類的方法。我們可以看下Object類中toString()是什么樣子的。

那么顯而易見,使用了@Override(重寫)注解,方法名、方法參數必須得和父類保持一致,否則會報錯。如下圖所示:

如果不加@Override(重寫)注解,則正常編譯。

2、@Deprecated 過期警告

概念:標記過時方法。如果使用該方法,會報編譯警告。在開發中,我們經常能遇到這樣的情況,如下圖:

在jdk中有大量這樣的方法,我就不舉例了,自己寫一個可能會更加方便理解。 

  1. public class Annotation1 extends Object{  
  2.     public static void main(String[] args) {  
  3.         testDeprecated.toString1();  
  4.     }  
  5.  
  6. class testDeprecated {  
  7.     @Deprecated  
  8.     public static String toString1(){  
  9.         return "我是重新定義過的toString方法";  
  10.     }  

注意點:這個不是報錯,只是警告,提醒我們這個方法可能會有問題,可能有更好的方法來實現!

3、@SuppressWarnings 忽略警告

概念:指示編譯器去忽略注解中聲明的警告。

平時開發中,我們會遇到這樣的情況,如下圖:

這也不是錯誤,這是提醒我們,該方法沒有使用到,警告提醒的作用。加上@SuppressWarnings注解后。 

  1. public class Annotation1 extends Object{  
  2.     public static void main(String[] args) {  
  3.     }  
  4.     @SuppressWarnings("all")  
  5.     public static void testSuppressWarnings(){  
  6.         System.out.println("測試+testSuppressWarnings忽略警告!");  
  7.     }  

方法成功高亮起來,并且沒有警告提示了!

我們可以點進去看下這個注解為什么需要參數?

看這里,這個不是方法哦,這是參數。

在注解中的參數格式:calss + 參數名 + ()!這個需要強行記憶哦,回頭我們自定義注解時也需要用到。換一種寫法加深理解!如下圖:

注意點:當注解中只有一個參數時,我們無需加上參數名,注解會自動幫我們匹配的。

二、元注解

概念:顧名思義,元注解就是給注解使用的注解!

1、@Retention 作用域-(常用)

概念:表示在什么級別保存該注解信息。在實際開發中,我們一般都寫RUNTIME,除非項目有特殊需求!我們看下@Retention的源碼。

可以看到,需要一個參數,進參數瞅瞅。

  •  SOURCE:源代碼時有用。
  •  CLASS:class文件中有用,但會被jvm丟棄。
  •  RUNTIME:運行時有用。
  •  關系:RUNTIME>CLASS>SOURCE

后面我們自定義注解時,每個都需要用該注解!

2、@Documented 作用文檔

概念:將此注解包含在 javadoc 中 ,它代表著此注解會被javadoc工具提取成文檔。

老規矩看下源碼:

無參的注解,作用域為RetentionPolicy.RUNTIME,運行時有用!這個只是用來作為標記,了解即可,在實際運行后會將該注解寫入javadoc中,方便查看。

3、@Target 目標-(常用)

概念:標記這個注解應該是使用在哪種 Java 成員上面!

參數源碼:

注意這里是數組格式的參數,證明可以傳多個值。

  •  @Target(ElementType.TYPE)——接口、類、枚舉、注解
  •  @Target(ElementType.FIELD)——字段、枚舉的常量
  •  @Target(ElementType.METHOD)——方法
  •  @Target(ElementType.PARAMETER)——方法參數
  •  @Target(ElementType.CONSTRUCTOR) ——構造函數
  •  @Target(ElementType.LOCAL_VARIABLE)——局部變量
  •  @Target(ElementType.ANNOTATION_TYPE)——注解
  •  @Target(ElementType.PACKAGE)——包

我們來試一下:

目標不對會報錯的哦!我們將其改成方法上!編譯即正常通過。

其他的作用域大家可以去自行嘗試,篇幅問題,無法做到每個都去試一遍!

4、@Inherited 繼承

概念:標記這個注解是繼承于哪個注解類(默認 注解并沒有繼承于任何子類)。

這個很簡單,就是當@InheritedAnno注解加在某個類A上時,假如類B繼承了A,則B也會帶上該注解。

5、新注解-(了解即可)

從 Java 7 開始,額外添加了 3 個注解:

  •  @SafeVarargs - Java 7 開始支持,忽略任何使用參數為泛型變量的方法或構造函數調用產生的警告。
  •  @FunctionalInterface - Java 8 開始支持,標識一個匿名函數或函數式接口。
  •  @Repeatable - Java 8 開始支持,標識某注解可以在同一個聲明上使用多次。

三、自定義注解

我們來定義一個屬于自己的注解。 

  1. @Retention(value = RetentionPolicy.RUNTIME)  
  2. @Target(value = ElementType.METHOD)  
  3. @Inherited  
  4. @interface myAnnotation {  
  5.     String name() default "";  
  6.     int age() default 18;  
  7.     String like();  
  8.     String IDCard() default "";  

格式:修飾符(pulic)+ @interface +注解名+ {參數等}

可利用default 設置默認值,設定了默認值后使用注解時不傳值也不會報錯,反之報錯!

我們只需要傳沒有默認值的參數即可。

如果不傳則報錯:

總結

主要就是要注意元注解的使用,因為我們自定義注解時必須得用到!其實注解主要配合反射來用,在此就不展開來敘述了。 

 

責任編輯:龐桂玉 來源: Java知音
相關推薦

2023-03-30 16:16:00

Java自定義注解開發

2023-10-24 13:48:50

自定義注解舉值驗證

2022-11-01 11:15:56

接口策略模式

2024-10-14 17:18:27

2024-12-27 15:37:23

2022-02-17 07:10:39

Nest自定義注解

2023-10-11 07:57:23

springboot微服務

2024-07-02 11:42:53

SpringRedis自定義

2024-10-09 10:46:41

springboot緩存redis

2017-08-03 17:00:54

Springmvc任務執行器

2023-10-09 07:37:01

2024-09-02 07:54:36

2020-12-02 11:56:16

Java注解Excel

2020-09-04 13:30:43

Java自定義代碼

2023-02-07 09:17:19

Java注解原理

2020-11-25 11:20:44

Spring注解Java

2021-02-20 11:40:35

SpringBoot占位符開發技術

2012-02-09 10:42:24

Java

2024-04-03 09:18:03

Redis數據結構接口防刷

2025-06-09 01:01:00

點贊
收藏

51CTO技術棧公眾號

国产精品美腿一区在线看| 91精品久久久久久久久久久久久久| 黄色大秀av大片| 国产99久久久国产精品潘金| 亚洲精品欧美极品| 欧美黑白配在线| 色偷偷噜噜噜亚洲男人| brazzers在线观看| 欧美日本在线看| 你懂的免费在线观看| 亚洲一区二区三区四区五区黄 | 亚洲蜜臀av乱码久久精品| 亚洲熟妇av日韩熟妇在线| 国产主播一区二区| 在线观看亚洲视频啊啊啊啊| 日韩中文字幕av电影| 蜜桃av色综合| 久久国产免费| 日韩三级电影免费观看| 三级欧美韩日大片在线看| 国产精品yjizz| 亚洲国产影院| 日本不卡一区二区三区视频| 日韩电影一二三区| 一级黄色免费在线观看| 国产91在线|亚洲| 日av中文字幕| 亚洲男女一区二区三区| 在线视频中文字幕| 欧美吻胸吃奶大尺度电影| 人人干在线视频| 欧美va亚洲va国产综合| 爱啪啪综合导航| 色婷婷综合久久久久中文字幕1| 麻豆精品一区| 国产日韩欧美在线视频观看| 亚洲黄色在线| 一道本在线观看视频| 91社区在线播放| 天天噜天天色| 91麻豆精品久久久久蜜臀| 色8久久影院午夜场| 98精品国产自产在线观看| 欧美激情另类| 一区二区精品在线| 久久精品这里都是精品| 中文字幕在线第一页| 91麻豆精品国产91久久久久久| 伊人网在线播放| 午夜精品福利视频| 亚洲国产婷婷| 国产综合av在线| 天天av天天翘天天综合网| 俺来也官网欧美久久精品| 久久久久久尹人网香蕉| 亚洲一本视频| 国产资源在线视频| 亚洲国产精品麻豆| h片在线观看视频免费免费| 午夜精品www| 香蕉久久国产| 国产成人综合一区| 欧美性极品少妇| 国产精品亚洲欧美一级在线| 91网站免费观看| 国产成人欧美日韩在线电影| 又黄又爽在线观看| 亚洲色图第一页| 97视频精品| 国产午夜福利100集发布| 欧美性黄网官网| 99久久这里有精品| 久久精品成人一区二区三区蜜臀| 国产亚洲美州欧州综合国| 日本视频不卡| 亚洲特黄一级片| 人禽交欧美网站免费| 99久久精品国产毛片| 精品三级在线| 奇米一区二区三区av| 精品久久久无码人妻字幂| 亚洲欧洲精品一区二区三区不卡| 天堂av网在线| 日韩在线免费视频| 欧美99久久| 91精品91久久久中77777老牛| 香蕉久久一区二区不卡无毒影院| 国产伦理精品| 国产精品久久久久久超碰| 免费成人av在线| 日本欧洲一区| 亚洲欧美制服中文字幕| 天天超碰亚洲| 日韩在线一级片| 欧美麻豆精品久久久久久| 9l视频自拍九色9l视频成人| 欧美日韩亚洲一区二区三区在线观看| 中文字幕精品一区二区三区精品| 丝袜综合欧美| 亚洲综合中文字幕在线| 国产精品久久久久久久久图文区| 新版的欧美在线视频| 国产精品毛片va一区二区三区| 中文一区二区在线观看| 美女100%一区| 欧美婷婷久久| 一本一道波多野结衣一区二区| 欧美a在线观看| 中文字幕第一页亚洲| 欧美日韩国产综合草草| 日韩欧美国产精品综合嫩v| 国产三级三级三级看三级| 亚洲精品久久久久久下一站| 影音先锋中文字幕一区二区| 日本我和搜子同居的日子高清在线| 日韩在线免费观看视频| 精品一区二区三区在线观看 | 亚洲天堂第一区| 欧美日韩免费一区二区三区视频| 精品高清久久| 三级免费网站| 韩国精品久久久999| 久久网这里都是精品| 欧美性猛交xxx高清大费中文| 亚洲精品中文字幕在线| 51久久夜色精品国产麻豆| 亚洲黑丝一区二区| 国产色在线观看| 欧美少妇一区| 精品女同一区二区| 麻豆传媒一区二区三区| 电影在线观看一区| 大地资源网在线观看免费官网| 日韩hd视频在线观看| 久久99国产精品麻豆| 成人观看网址| 日本一区午夜艳熟免费| www.欧美免费| 欧美国产激情二区三区| 国产福利一区二区精品秒拍| 日本超碰在线观看| 国产精品国产三级国产aⅴ9色| 亚洲国产日韩一区二区| 日韩欧美精品一区| av在线播放网站| 日本在线一区| 一区二区三区国产视频| 久久嫩草精品久久久精品| 欧美一级一片| 加勒比一区二区三区在线| 九九九九精品| 日韩电影中文字幕在线| jizz一区二区| 伊人久久大香线蕉| 国产福利在线| 在线丝袜欧美日韩制服| 久久成年人免费电影| 亚洲综合区在线| 99pao成人国产永久免费视频| 欧美13videosex性极品| 日韩手机在线观看视频| 国产精品亚洲欧美导航| 91精品国产日韩91久久久久久| 日本欧美久久久久免费播放网| 少妇一区视频| 影音先锋可以看的网站| 麻豆成人在线播放| 播播国产欧美激情| 亚洲免费在线播放| 亚洲在线免费| 国产亚洲高清一区| 三级视频在线| 国产在线视频综合| 国产精品三级美女白浆呻吟| 日韩视频永久免费| 国产无人区一区二区三区| 午夜国产精品视频免费体验区| 天天综合av| 一级毛片免费视频| 亚洲精品自在在线观看| 69久久夜色精品国产69| 欧美一级二级三级乱码| 久久久精品免费网站| 激情综合网址| 1313精品午夜理伦电影| 丁香婷婷在线观看| 青青青免费在线| http;//www.99re视频| 俺也去精品视频在线观看| 色就色 综合激情| 99九九99九九九视频精品| 欧美日本一区| caoporn成人| 91桃色在线观看| а√最新版地址在线天堂 | 欧美99在线视频观看| 在线观看亚洲精品福利片| av影片免费在线观看| 色视频www在线播放国产人成| 亚洲一区精彩视频|