精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

掌握 Java 注解,一夜陸地神仙

開發 后端
元數據是指用來描述數據的數據,通俗一點,就是描述代碼間關系,或者代碼與其它資源(例如數據庫表)之間內在聯系的數據。

一、注解簡介

Java注解用于為Java代碼提供元數據。

元數據是指用來描述數據的數據,通俗一點,就是描述代碼間關系,或者代碼與其它資源(例如數據庫表)之間內在聯系的數據。在一些技術框架中,如Struts、hibernate就不知不覺用到了元數據。對于Struts來說,元數據指的是struts-config.xml;對hibernate來說就是hbm文件。以上闡述的幾種元數據都是基于xml文件的或者其他形式的單獨配置文件。這樣表示有些不便之處。1、與被描述的文件分離,不利于一致性的維護;2、所有這樣的文件都是ASCII文件,沒有顯式的類型支持。基于元數據的廣泛使用,JDK5.0引入了Annotation的概念來描述元數據。在Java中,元數據以標簽的形式存在于Java代碼中,元數據標簽的存在并不影響程序代碼的編譯和執行。簡而言之,言而總之,注解就是標簽的意思。

二、如何創建注解

JDK5.0出來后,Java語言中就有了四種類型,即類class、枚舉enum、接口interface、注解@interface,它們處于同一級別,Java就是通過注解來表示元數據的。

  1. package com.guor.ClientNew; 
  2.   
  3. public @interface MyAnnotation { 
  4.     // 定義公共的final靜態屬性 
  5.     int age = 25; 
  6.   
  7.     // 定義公共的抽象方法 
  8.     String name(); 

Java注解本質上就是接口,是繼承了Annotation接口的接口。

三、元注解

元注解是可以注解到注解上的注解,或者說元注解是一種基本注解,它能夠應用到其它的注解上面。

元標簽有 @Retention、@Documented、@Target、@Inherited、@Repeatable 5 種。

1、@Retention

Retention,中文釋義保留期的意思

當@Retention應用到注解上的時候,它解釋說明了這個注解的生命周期。

  • RetentionPolicy.SOURCE 注解只在源碼階段保留,在編譯器進行編譯時它將被丟棄忽視。
  • RetentionPolicy.CLASS 注解只被保留到編譯進行的時候,它并不會被加載到JVM中。
  • RetentionPolicy.RUNTIME 注解可以保留到程序運行的時候,它會被加載到JVM中。

2、@Documented

顧名思義,這個元注解肯定和文檔有關。它的作用是能夠將注解中的元素包含到Javadoc中去。

3、@Target

標明注解運用的地方。

  • ElementType.ANNOTATION_TYPE 可以給一個注解進行注解
  • ElementType.CONSTRUCTOR 可以給構造方法進行注解
  • ElementType.FIELD 可以給屬性進行注解
  • ElementType.LOCAL_VARIABLE 可以給局部變量進行注解
  • ElementType.METHOD 可以給方法進行注解
  • ElementType.PACKAGE 可以給一個包進行注解
  • ElementType.PARAMETER 可以給一個方法內的參數進行注解
  • ElementType.TYPE 可以給一個類型進行注解,比如類、接口、枚舉

4、@Inherited

lnherited是繼承的意思。

如果一個超類被@Inherited注解過的注解進行注解的話,那么如果它的子類沒有被任何注解應用的話,那么這個子類就繼承了超類的注解。

代碼實例

5、@Repeatable

Repeatable 自然是可重復的意思。@Repeatable 是 Java 1.8 才加進來的,所以算是一個新的特性。

什么樣的注解會多次應用呢?通常是注解的值可以同時取多個。

在生活中一個人往往是具有多種身份,如果我把每種身份當成一種注解該如何使用???

先聲明一個Persons類用來包含所有的身份

  1. @Target(ElementType.TYPE)   
  2. @Retention(RetentionPolicy.RUNTIME) 
  3. public @interface Persons { 
  4.   Person[] value(); 

這里@Target是聲明Persons注解的作用范圍,參數ElementType.Type代表可以給一個類型進行注解,比如類,接口,枚舉。

@Retention是注解的有效時間,RetentionPolicy.RUNTIME是指程序運行的時候。

Person注解:

  1. @Repeatable(Persons.class) 
  2. public @interface Person{ 
  3.   String role() default ""

@Repeatable括號內的就相當于用來保存該注解內容的容器。

聲明一個Man類,給該類加上一些身份。

  1. @Person(role="CEO"
  2. @Person(role="husband"
  3. @Person(role="father"
  4. @Person(role="son"
  5. public class Man { 
  6.   String name=""

在主方法中訪問該注解:

  1. public static void main(String[] args) { 
  2.     Annotation[] annotations = Man.class.getAnnotations();   
  3.     System.out.println(annotations.length); 
  4.     Persons p1=(Persons) annotations[0]; 
  5.     for(Person t:p1.value()){ 
  6.         System.out.println(t.role()); 
  7.     } 

下面的代碼結果輸出相同,但是可以先判斷是否是相應的注解,比較嚴謹。

  1. if(Man.class.isAnnotationPresent(Persons.class)) { 
  2.     Persons p2=Man.class.getAnnotation(Persons.class); 
  3.     for(Person t:p2.value()){ 
  4.         System.out.println(t.role()); 
  5.     } 
  6.  } 

運行結果:

四、注解的屬性

注解的屬性也叫做成員變量,注解只有成員變量,沒有方法。注解的成員變量在注解的定義中以“無參的方法”形式來聲明,其方法名定義了該成員變量的名字,其返回值定義了該成員變量的類型。

  1. @Target(ElementType.TYPE) 
  2. @Retention(RetentionPolicy.RUNTIME) 
  3. public @interface TestAnnotation { 
  4.     int id(); 
  5.     String msg(); 

上面代碼中定義了TestAnnotation這個注解中擁有id和msg兩個屬性。在使用的時候,我們應該給他們進行賦值。

賦值的方式是在注解的括號內以value=“”形式,多個屬性之前用,隔開。

  1. @TestAnnotation(id=3,msg="hello annotation"
  2. public class Test { 

需要注意的是,在注解中定義屬性時它的類型必須是 8 種基本數據類型外加 類、接口、注解及它們的數組。

注解中屬性可以有默認值,默認值需要用 default 關鍵值指定。比如:

  1. @Target(ElementType.TYPE) 
  2. @Retention(RetentionPolicy.RUNTIME) 
  3. public @interface TestAnnotation { 
  4.     public int id() default -1; 
  5.     public String msg() default "哪吒"

TestAnnotation 中 id 屬性默認值為 -1,msg 屬性默認值為 哪吒。

它可以這樣應用。

  1. @TestAnnotation() 
  2. public class Test {} 

因為有默認值,所以無需要再在 @TestAnnotation 后面的括號里面進行賦值了,這一步可以省略。

另外,還有一種情況。如果一個注解內僅僅只有一個名字為 value 的屬性時,應用這個注解時可以直接將屬性值填寫到括號內。

  1. public @interface Check { 
  2.     String value(); 

上面代碼中,Check 這個注解只有 value 這個屬性。所以可以這樣應用。

  1. @Check("hi"
  2. int a; 

這和下面的效果是一樣的

  1. @Check(value="hi"
  2. int a; 

最后,還需要注意的一種情況是一個注解沒有任何屬性。比如:

  1. public @interface Perform {} 

那么在應用這個注解的時候,括號都可以省略。

  1. @Perform 
  2. public void testMethod(){} 

五、Java自帶的注解

學習了上面相關的知識,我們已經可以自己定義一個注解了。其實 Java 語言本身已經提供了幾個現成的注解。

1、@Override

這個大家應該很熟悉了,提示子類要復寫父類中被 @Override 修飾的方法

2、@Deprecated

加上這個注解之后,表示此方法或類不再建議使用,調用時會出現刪除線,但不代表不能用,只是說,不推薦使用,因為有更好的方法可以調用。

那么直接刪掉不就完了?

因為在一個項目中,工程比較大,代碼比較多,而在后續的開發過程中,可能之前的某個方法實現的并不是很合理,這個時候要重新寫一個方法,而之前的方法還不能隨便刪,因為別的地方可能在調用它,所以加上這個注解,就OK啦!

3、@SuppressWarning

阻止警告的意思。

該批注的作用是給編譯器一條指令,告訴它對被批注的代碼元素內部的某些警告保持靜默。

4、@SafeVarargs

參數安全類型注解。

它的目的是提醒開發者不要用參數做一些不安全的操作,它的存在會阻止編譯器產生unchecked這樣的警告。

在聲明具有模糊類型(比如:泛型)的可變參數的構造函數或方法時,Java編譯器會報unchecked警告。鑒于這種情況,如果程序猿斷定聲明的構造函數和方法的主體no problem,可使用@SafeVarargs進行標記,這樣Java編譯器就不會報unchecked警告了!

5、@FunctionalInterface

Java 8為函數式接口引入了一個新注解@FunctionalInterface,主要用于編譯級錯誤檢查,加上該注解,當你寫的接口不符合函數式接口定義的時候,編譯器會報錯。

它們主要用在Lambda表達式和方法引用(實際上也可認為是Lambda表達式)上。

如定義了一個函數式接口如下:

  1. @FunctionalInterface 
  2. interface GreetingService  
  3.     void sayMessage(String message); 

那么就可以使用Lambda表達式來表示該接口的一個實現(注:JAVA 8 之前一般是用匿名類實現的):

  1. GreetingService greetService1  
  2. = message -> System.out.println("Hello " + message); 

六、注解的使用場景

1、注解的官方釋義

注解是一系列元數據,它提供數據用來解釋程序代碼,但是注解并非是所解釋的代碼本身的一部分。注解對于代碼的運行效果沒有直接影響。

2、注解的用處

① 提供信息給編譯器:編譯器可以利用注解來探測錯誤或警告信息

② 編譯階段時的處理:軟件工具可以利用注解信息來生成代碼、HTML文檔或其它響應處理。

③ 運行時的處理:某些注解可以在程序運行時接受代碼的提取。

值得注意的是,注解不是代碼本身的一部分。

3、注解的用法舉例

  1. public class ExampleUnitTest { 
  2.     @Test 
  3.     public void addition_isCorrect() throws Exception { 
  4.         assertEquals(4, 2 + 2); 
  5.     } 

@Test 標記了要進行測試的方法 addition_isCorrect().

還有例如ssm框架等運用了大量的注解。

七、注解的本質

注解本質是一個繼承了Annotation的特殊接口,其具體實現類是Java運行時生成的動態代理類。通過代理對象調用其自定義注解的方法,最終調用的是AnnotationInvocationHandler的invoke方法,該方法會從memberValues這個map中索引出對應的值,而memberValues的來源是Java常量池。

八、總結

1、注解就是標簽,注解為了解釋代碼

2、注解的基本語法@interface

3、注解的元注解

4、注解的屬性

5、注解主要給編譯器及工具類型的軟件用的

6、注解的提取要借助于Java的反射技術,反射比較慢,所以注解使用時也需要謹慎計較時間成本

 本文轉載自微信公眾號「哪吒學Java」,可以通過以下二維碼關注。轉載本文請聯系哪吒學Java公眾號。

 

 

責任編輯:武曉燕 來源: 哪吒學Java
相關推薦

2021-10-11 10:12:02

機器人人工智能系統

2018-05-23 11:43:59

數據庫

2015-07-14 11:39:08

Docker容器DevOps虛擬機

2016-01-26 17:47:58

SaaSSaaS平臺SaaS服務

2011-09-23 09:41:02

2019-03-05 10:03:17

阿里云云廠商硬盤

2025-10-23 12:44:10

2019-01-21 10:12:58

拼多多漏洞黑灰產

2015-11-16 11:50:37

流量提速降費運營商

2010-04-27 10:13:27

IPv4IPv6

2015-03-10 10:32:21

蘋果2015MacBook Air

2024-08-30 17:25:23

開發AI

2021-03-16 14:43:23

比特幣加密貨幣貨幣

2019-11-01 18:57:44

戴爾

2015-11-16 11:03:59

流量提速降費運營商

2009-07-15 13:01:47

2009-04-21 15:07:02

2012-04-01 09:14:16

App刷排名刷榜

2014-08-22 17:19:12

經營信息化

2024-11-01 13:34:58

點贊
收藏

51CTO技術棧公眾號

日本欧美在线看| 精品视频高潮| 亚洲欧美日韩系列| 国模无码大尺度一区二区三区| 精品国产成人系列| 国产视频一区二区三区在线播放| 自拍视频在线| 成人精品免费视频| 国产欧美亚洲精品| 一级免费在线观看| 欧美va久久久噜噜噜久久| 精品国产一区二区三区久久久蜜月 | 亚洲人成精品久久久久| 国产精品日韩高清| 亚洲一区二区视频在线播放| 1024成人| 欧美理论电影在线观看| 国内精品卡一卡二卡三| 国产精品欧美大片| 91.麻豆视频| 国产视频一区二区视频| 国产伦子伦对白在线播放观看| 国产精品麻豆欧美日韩ww| 久久久久九九九| 午夜精品久久久久久久96蜜桃 | 欧美精品videossex性护士| 97人妻人人揉人人躁人人| 成人影院中文字幕| 欧美一区二区日韩| 在线观看国产一级片| 午夜欧美巨大性欧美巨大| 亚洲午夜精品一区二区三区他趣| 国产又大又长又粗又黄| 成年人在线观看| 久久人人超碰精品| 精品亚洲第一| 欧美一级在线免费观看| 国产精品 日产精品 欧美精品| 国产精品一香蕉国产线看观看| 午夜影院免费在线观看| 99riav1国产精品视频| 麻豆成人在线看| 亚洲欧美日韩第一页| 精品久久久久中文字幕小说| 日韩av一区二区在线| xxww在线观看| 亚洲天堂网站| 91精品国产综合久久久蜜臀粉嫩 | 在线中文字幕播放| 精品动漫一区二区三区| 中文字幕无码精品亚洲资源网久久| 麻豆tv免费在线观看| 国产精品福利一区| 亚洲一区二区四区| 3p视频在线观看| 国产精品毛片高清在线完整版| 日韩一区国产在线观看| 国产原创av在线| 国产亚洲一区二区三区| 色99中文字幕| 成年人视频网站在线| 国产精品日产欧美久久久久| 五月天久久狠狠| av播放在线| 日本一二三四高清不卡| 亚洲欧洲久久| 韩国av网站在线| 亚洲激情自拍偷拍| 精品人妻大屁股白浆无码| free性欧美16hd| 黑人巨大精品欧美一区二区三区 | 国产一级片网址| 亚洲免费黄色| 日韩美女在线观看| 伊人亚洲综合网| 国产在线麻豆精品观看| 97久久精品午夜一区二区| 亚洲精品一级片| 91亚洲午夜精品久久久久久| 亚洲一区av在线播放| 久久久久久草| 国产中文字幕在线看| 中文字幕乱码一区二区免费| 国产精品无码乱伦| 波多野结衣在线高清| 欧美视频专区一二在线观看| 天天爽天天爽夜夜爽| 国产一区二区三区黄网站| 精品sm捆绑视频| 久久丫精品忘忧草西安产品| 亚洲精品国产首次亮相| 久久久女女女女999久久| 亚洲第一精品在线观看 | 国产91色在线| 国产一区二区三区黄片| 成人一二三区视频| 日韩精品无码一区二区三区| 调教视频免费在线观看| 亚洲r级在线视频| 香港日本韩国三级网站| 97久久精品| 中文字幕在线看视频国产欧美| 亚洲av鲁丝一区二区三区| 男人的天堂亚洲在线| 亚洲最大福利网站| 国内av一区二区三区| 亚洲少妇中出一区| 欧美一级片中文字幕| 亚洲国产精品免费视频| 亚洲欧美国产精品| 欧美极品视频在线观看| 日本sm残虐另类| 精品伦精品一区二区三区视频| 日本免费视频在线观看| 欧美日韩国产中文精品字幕自在自线| 杨幂毛片午夜性生毛片| 欧美福利在线播放网址导航| 久久精品成人欧美大片| 男人天堂视频网| 成人三级伦理片| 影音先锋欧美资源| 搜成人激情视频| 日韩av网站大全| 久草视频在线资源站| 久久97超碰国产精品超碰| 免费成人深夜夜行视频| 久操av在线| 在线91免费看| 91视频最新网址| 日本特黄久久久高潮| 狼狼综合久久久久综合网| 青青在线视频| 日韩一区二区麻豆国产| 久久精品一区二区三区四区五区 | 国产成人短视频| 无码精品在线观看| 亚洲一区二区三区四区的| 久久久久久久久久毛片| 成人一区不卡| 国产精品久久久久久久久久久新郎| 天天干视频在线| 午夜av区久久| 女同性恋一区二区三区| 亚洲国产片色| 国产日韩二区| 爱啪啪综合导航| 亚洲国产精品久久91精品| 国产在线成人精品午夜| 成人免费高清视频在线观看| 日本免费a视频| www.豆豆成人网.com| 色综合久久久888| 亚洲福利在线观看视频| 伊人婷婷欧美激情| 深田咏美中文字幕| 亚洲精品女人| 欧洲国产精品| 午夜av成人| 久久久99免费视频| 精品国产av一区二区| 一二三区精品福利视频| 免费a v网站| 久久免费国产| 亚洲视频电影| 欧美日韩中出| 欧美极品美女视频网站在线观看免费| 亚洲国产成人精品一区二区三区| 亚洲一区二区三区精品在线| 久久久久9999| 三级欧美韩日大片在线看| 亚洲不卡一卡2卡三卡4卡5卡精品| 成人免费看视频网站| 一区二区亚洲欧洲国产日韩| 一级淫片免费看| 亚洲影视在线播放| free性中国hd国语露脸| 葵司免费一区二区三区四区五区| 亚洲精品高清视频| 亚洲一区 二区| 555www成人网| 秋霞影院午夜丰满少妇在线视频| 7777精品久久久大香线蕉| 午夜爽爽爽男女免费观看| 成人丝袜视频网| 天天干在线影院| 欧美在线免费| 欧美日韩亚洲在线| 电影一区中文字幕| 777午夜精品福利在线观看| 国产人成在线视频| 日韩视频一区在线观看| 亚洲免费黄色网址| 1024亚洲合集| 9.1成人看片| 狠狠色狠狠色综合系列| 蜜臀av色欲a片无码精品一区| 视频一区欧美| 99r国产精品视频| 国产精品极品美女在线观看| 欧美成人激情视频免费观看| 欧美日韩伦理片| 日韩欧美一区二区三区在线| 在线观看日本视频| 亚洲激情图片qvod| 波多野在线播放| 国产不卡视频在线观看| 91国产精品视频在线观看| 国内综合精品午夜久久资源| 视频一区二区三区免费观看| 久久国产精品色av免费看| 成人国产精品日本在线| 欧美人体一区二区三区| 欧美日本亚洲视频| 亚洲搞黄视频| 亚洲欧洲av一区二区| 国产 日韩 欧美 综合| 欧美日韩黄色一区二区| 久久精品无码av| 亚洲超丰满肉感bbw| 国产精品成人69xxx免费视频| 久久先锋资源网| 精品国产一区在线| 国产凹凸在线观看一区二区| 一区二区久久精品| 奇米色一区二区| 国产精品99久久免费黑人人妻| 国产精品黄色| 欧美少妇一级片| 日韩国产一区二区| 日韩精品电影网站| 免费观看久久av| 久久一区二区三区av| 精品欠久久久中文字幕加勒比| 亚洲曰本av电影| 国产一区二区三区免费在线| 国产精自产拍久久久久久| 欧美成a人片在线观看久| 清纯唯美亚洲激情| 忘忧草在线影院两性视频| 国内精品久久久久久久久| 最新国产在线拍揄自揄视频| xxxxx成人.com| 国产日产一区二区| 久久久精品在线观看| 蜜桃视频网站在线观看| 日韩视频亚洲视频| 国产激情视频在线观看| www.日本久久久久com.| 91看片在线观看| 中文字幕日韩综合av| 免费在线毛片网站| 久久色精品视频| av网址在线免费观看| 美女福利精品视频| 牛牛精品在线| 97人人做人人爱| 成人小电影网站| 国产精品福利网站| va天堂va亚洲va影视| 91久久综合亚洲鲁鲁五月天| 精品国产鲁一鲁****| 99视频网站| 国产精品传媒| 区一区二区三区中文字幕| 久久激情电影| 日韩视频一二三| 亚洲午夜极品| 成年人午夜免费视频| 久久av最新网址| 亚洲激情在线观看视频| 国产一区二区伦理| yjizz视频| 国产欧美一区二区精品秋霞影院| 亚洲图片第一页| 亚洲精品免费看| 91国产丝袜播放在线| 欧美综合天天夜夜久久| 国产一区二区在线播放视频| 欧美r级电影在线观看| 视频二区在线| 久久九九国产精品怡红院| 欧美aaaxxxx做受视频| 日本高清视频一区| 亚洲综合资源| 蜜桃av噜噜一区二区三| 国产精品99在线观看| www.av毛片| 久久精品国产秦先生| 久草视频福利在线| 国产精品日韩精品欧美在线| 国产一级久久久| 欧美色涩在线第一页| 99riav国产| 亚洲色图17p| 青草青在线视频| 国产精品露脸av在线| 超碰97久久| 一本色道久久综合亚洲二区三区| 雨宫琴音一区二区在线| 欧美成人黄色网址| 99久久精品国产一区| 少妇aaaaa| 欧美在线你懂得| 少妇高潮久久久| 播播国产欧美激情| 欧美7777| 国产精品综合久久久久久| 欧美激情欧美| 亚洲中文字幕无码不卡电影| 国产精品 日产精品 欧美精品| 国产123在线| 欧美日韩国产在线播放| 亚洲欧美另类日韩| zzjj国产精品一区二区| 香蕉成人影院| 精品综合久久| 影音先锋亚洲精品| 天堂在线精品视频| 国产精品二区一区二区aⅴ污介绍| 国产一级精品视频| 精品国产1区二区| 制服丝袜在线播放| 国产日韩在线看片| 中日韩免视频上线全都免费| 国产精品999视频| 成人av网站在线观看免费| 免费在线观看a级片| 欧美影片第一页| 久蕉在线视频| 国产99久久久欧美黑人| 任你躁在线精品免费| 妺妺窝人体色777777| 国产精品主播直播| 无码黑人精品一区二区| 538prom精品视频线放| h视频网站在线观看| 国产精品久久久久久久7电影| 九九亚洲视频| 黄色一级一级片| 久久精品一区二区三区不卡牛牛| 日本特级黄色片| 精品视频—区二区三区免费| 正在播放日韩精品| 欧美一区二区三区四区在线观看地址 | 少妇高潮毛片色欲ava片| 国产iv一区二区三区| 欧美人与禽zozzo禽性配| 日韩午夜在线影院| 色呦呦呦在线观看| 高清不卡一区二区三区| 欧美国产三级| 极品白嫩的小少妇| 图片区小说区国产精品视频| 同心难改在线观看| 日本精品视频在线播放| 波多野结衣在线播放一区| 精品久久久久久中文字幕2017| 国产网站一区二区三区| 一级黄色大毛片| 久久99久久99精品免观看粉嫩 | 黑人精品一区| 日韩精品资源| 精品一区二区三区的国产在线播放| 蜜桃视频最新网址| 欧美一级黄色片| cao在线视频| 欧美极品一区二区| 久久成人麻豆午夜电影| 日日骚一区二区三区| 亚洲国产精品中文| 性欧美freehd18| 蜜臀av.com| 26uuu精品一区二区| 亚洲视频一区在线播放| 欧美日韩国产二区| 蜜桃精品wwwmitaows| 一本一道久久a久久综合蜜桃| 亚洲精选免费视频| 天天操天天干天天干| 国产精品网站大全| 在线精品观看| 91社区视频在线观看| 日韩一区二区电影在线| 伊人久久视频| 亚洲小说欧美另类激情| 成人av一区二区三区| 中文字幕+乱码+中文| 久久久久久久国产精品| 国产一区网站| 欧美老女人bb| 色噜噜狠狠一区二区三区果冻| 国产精品实拍| 美女被啪啪一区二区| 国产一区二区精品久久91| 久久久久久久久久影院| 久青草国产97香蕉在线视频| 天堂俺去俺来也www久久婷婷| 天天av天天操| 91福利在线观看| 欧美hdxxx|