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

框架開發之Java注解的妙用

開發 架構
如果你還不會使用注解,你肯定不好意思對別人說你學過Spring,你學過Mybatis,因為它們用了大量的注解。可見注解在開發領域已經使用的非常廣泛了。

 [[279602]]

如果你還不會使用注解,你肯定不好意思對別人說你學過Spring,你學過Mybatis,因為它們用了大量的注解。可見注解在開發領域已經使用的非常廣泛了。

注解的好處:

1.能夠讀懂別人寫的代碼,特別是框架相關的代碼。

2.本來可能需要很多配置文件,需要很多邏輯才能實現的內容,就可以使用一個或者多個注解來替代,這樣就使得編程更加簡潔,代碼更加清晰。

3.(重點)刮目相看。

(但是怎么樣才能讓別人刮目相看呢?會用注解不是目的,最重要的是要使用自定義注解來解決問題。)

舉個栗子:

如果面試的時候,你跟老板說你會使用注解,老板覺得你這個人還行;但是如果老板發現你會自定義注解解決問題,老板肯定就會眼前一亮。

注解這一概念是在java1.5版本提出的,說Java提供了一種原程序中的元素關聯任何信息和任何元數據的途徑的方法。

一、Java中的常見注解

1)JDK注解

JDK注解一共分為三類:

 

案例:

我們先新建一個接口people,如下: 

  1. public interface people {  
  2.    public String name();  
  3.    public int age();  
  4.    public void work();  

然后再建一個類Child實現類people這個接口,并實現該類的方法: 

  1. public class Child implements people {  
  2.    @Override  
  3.    public String name() {  
  4.        return null;  
  5.    }  
  6.    @Override  
  7.    public int age() {  
  8.        return 0;  
  9.    }  
  10.    @Override  
  11.    public void work() {  
  12.    } 

看到這里,我們發現這里的所有方法都會加上一個@Override標記,它告訴我們,同時也告訴編譯器我們的這些方法肯定覆蓋了類people里面的方法的。假如說,我現在把類people里面的某一個方法注釋掉: 

  1. //public String name(); 

再看類Child里面的name方法就會報錯。這樣,以后大家看到@Override的時候就能想到這個方法是覆蓋了某個接口的方法的。

然后,我們回過頭來看類people里面有一個work的方法。這里我們可以理解為人是要工作的,但是并不是所有的人都在工作,那么怎么辦呢?如果說這個接口正在用,我們不能刪除這個方法,這個時候我們就可以這樣: 

  1. @Deprecated  
  2. public void work(); 

@Deprecated標記就表明這個方法已經過時了,在實際中,它又有什么樣的應用場景呢?我們在建一個測試類: 

  1. public class Test { 
  2.     public void work() {  
  3.        people people=new Child();  
  4. !      people.work();  
  5.    }  

這個時候我們會發現myeclipse會給一個警告,并且在work中間出現一個破折號,意思就是這個方法已經過時了。那么問題來了,雖然這個方法過時了,但是我們就是那么傲嬌,一定要用它,怎么辦呢?只需要這樣: 

  1. public class Test {  
  2.    @SuppressWarnings("deprecation")  
  3.    public void work() {  
  4.        people people=new Child();  
  5.        people.work();  
  6.    }  

這樣我們就忽略了這個警告。@SuppressWarnings("deprecation")就表示我們忽略了deprecation這樣的一個警告。

2)Java第三方注解

 

二、注解的分類

1)按照運行機制劃分:

【源碼注解→編譯時注解→運行時注解】

源碼注解:只在源碼中存在,編譯成.class文件就不存在了。

編譯時注解:在源碼和.class文件中都存在。像前面的@Override、@Deprecated、@SuppressWarnings,他們都屬于編譯時注解。

運行時注解:在運行階段還起作用,甚至會影響運行邏輯的注解。像@Autowired自動注入的這樣一種注解就屬于運行時注解,它會在程序運行的時候把你的成員變量自動的注入進來。

2)按照來源劃分:

【來自JDK的注解——來自第三方的注解——自定義注解】

3)元注解:

元注解是給注解進行注解,可以理解為注解的注解就是元注解。

三、自定義注解

我們分四步來解析自定義注解:

自定義注解的語法要求: 

  1. @Target({ElementType.METHOD,ElementType.TYPE})  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Inherited  
  4. @Documented  
  5. public @interface Description {  
  6.    String desc();  
  7.    String author();  
  8.    int age() default 18;  

首先我們要明確這不是一個接口,它是使用@interface關鍵字定義的一個注解。

然后我們看下面的幾個方法,String desc();雖然它很類似于接口里面的方法,其實它在注解里面只是一個成員變量(成員以無參無異常的方式聲明),int age() default 18;(成員變量可以用default指定一個默認值的)。

最后我們要知道:

①.成員類型是受限制的,合法的類型包括基本的數據類型以及String,Class,Annotation,Enumeration等。

②.如果注解只有一個成員,則成員名必須取名為value(),在使用時可以忽略成員名和賦值號(=)。

③.注解類可以沒有成員,沒有成員的注解稱為標識注解。

元注解:

有沒有發現上面那段代碼有一個沒有說呢?沒錯,它們就是我們所說的元注解: 

  1. @Target({ElementType.METHOD,ElementType.TYPE})  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. @Inherited  
  4. @Documented 

我們先看第一行:@Target是這個注解的作用域,ElementType.METHOD是這個注解的作用域的列表,METHOD是方法聲明,除此之外,還有:

CONSTRUCTOR(構造方法聲明),FIELD(字段聲明),LOCAL VARIABLE(局部變量聲明),METHOD(方法聲明),PACKAGE(包聲明),PARAMETER(參數聲明),TYPE(類接口)

第二行:@Retention是它的生命周期,前面不是說注解按照運行機制有一個分類嘛,RUNTIME就是在運行時存在,可以通過反射讀取。除此之外,還有:

SOURCE(只在源碼顯示,編譯時丟棄),CLASS(編譯時記錄到class中,運行時忽略),RUNTIME(運行時存在,可以通過反射讀取)

第三行:@Inherited是一個標識性的元注解,它允許子注解繼承它。

第四行:@Documented,生成javadoc時會包含注解。

使用自定義注解:

使用注解的語法:

@<注解名>(<成員名1>=<成員值1>,<成員名1>=<成員值1>,...)

案例: 

  1. @Description(desc="i am Color",author="boy",age=18 
  2.    public String Color() {  
  3.        return "red";  
  4.    } 

這里的Description是我們剛才在自定義注解語法要求里面定義的注解噢,然后我們可以給它的每一個成員變量賦值,注意數據類型。值得注意的是,因為我們前面定義的作用域是在方法和類接口上,所以這個注解在Color()方法上使用是沒問題的。

解析注解

概念:

通過反射獲取類 、函數或成員上的運行時注解信息,從而實現動態控制程序運行的邏輯。

準備工作:

接下來,我們就開始測試了: 

  1. public class ParseAnn {  
  2.    public static void main(String[] args) {  
  3.        try {  
  4.            // 使用類加載器加載類  
  5.            Class c = Class.forName("com.test.Child");  
  6.            // 找到類上面的注解  
  7.            boolean isExist = c.isAnnotationPresent(Description.class);  
  8.            // 上面的這個方法是用這個類來判斷這個類是否存在Description這樣的一個注解  
  9.            if (isExist) {  
  10.                // 拿到注解實例,解析類上面的注解  
  11.                Description d = (Description) c.getAnnotation(Description.class);  
  12.                System.out.println(d.value());  
  13.            }  
  14.        } catch (ClassNotFoundException e) {  
  15.            e.printStackTrace();  
  16.        }  
  17.    }  

輸出的結果: 

  1. i am class annotation 

可以看到,我們成功的解析了Child類上面的注解。

接下來,我們繼續解析方法上的注解: 

  1. //獲取所有的方法  
  2.            Method[] ms = c.getMethods();  
  3.            // 遍歷所有的方法  
  4.            for (Method m : ms) {  
  5.                boolean isExist1 = m.isAnnotationPresent(Description.class);  
  6.                if (isExist1) {  
  7.                    Description d1=m.getAnnotation(Description.class);  
  8.                    System.out.println(d1.value());  
  9.                }  
  10.            } 

輸出的結果: 

  1. i am class annotation  
  2. i am method annotation 

可以看到,我們成功的解析了方法上面的注解。 

  1. //另一種解析方法  
  2.            for (Method m : ms) {  
  3.                //拿到方法上的所有的注解  
  4.                Annotation[] as=m.getAnnotations();  
  5.                for (Annotation a : as) {  
  6.                    //用二元操作符判斷a是否是Description的實例  
  7.                    if (a instanceof Description) {  
  8.                        Description d=(Description) a;  
  9.                        System.out.println(d.value());  
  10.                    }  
  11.                }  
  12.            } 

也可以得到上面的效果。

此時,如果把Description類里面的元注解改一下,比如:

@Retention(RetentionPolicy.RUNTIME)→@Retention(RetentionPolicy.SOURCE),再運行程序,結果會成怎樣呢?如果改成CLASS呢?大家要不要試一試? 

 

責任編輯:龐桂玉 來源: Java團長
相關推薦

2023-02-15 14:02:52

HutoolMapProxy工具包

2011-08-03 14:49:57

框架

2022-06-09 07:27:14

JavaSpring容器

2017-03-02 13:19:43

dubbo分布式框架

2022-05-30 11:17:44

Spring容器配置

2011-07-27 13:57:36

iPhone 游戲 Cocos2d

2023-05-08 15:59:27

UI自動化腳本鴻蒙

2013-07-22 14:28:07

網絡安全框架NIST

2015-10-16 09:59:52

SwiftCocoa

2020-09-07 12:53:56

.NET 5Web應用框架

2025-09-02 03:00:00

2011-07-07 10:50:09

Cocoa 框架

2013-04-23 09:31:12

Winform開發框架

2022-10-26 09:57:52

VectorRustC++

2021-10-18 10:14:26

鴻蒙HarmonyOS應用

2009-01-07 11:07:27

AJAXASP.NET.NET

2010-01-27 08:44:56

ASP.NET MVC

2016-03-23 11:05:58

Socket開發框架分析

2018-11-26 07:04:59

神經網絡優化函數

2023-02-24 14:52:20

Redis存儲開發
點贊
收藏

51CTO技術棧公眾號

天天躁夜夜躁狠狠是什么心态| 国产精品333| 亚洲国产成人一区二区 | 亚洲精品一二区| 国模杨依粉嫩蝴蝶150p| 在线免费观看a视频| 久久欧美一区二区| 亚洲精品欧美日韩专区| 日日噜噜噜噜人人爽亚洲精品| 视频在线不卡免费观看| 亚洲国产一区二区三区在线观看 | 久久久久久久久精| 国内精品久久久久久久久电影网 | 涩涩视频在线观看免费| 久久精品国产77777蜜臀| 国外成人在线视频| 小泽玛利亚一区| 亚洲人成网www| 精品久久五月天| 亚洲天堂国产视频| 写真福利精品福利在线观看| 亚洲一区在线电影| 一区国产精品| 国外av在线| 91丨九色丨蝌蚪丨老版| 99久久一区三区四区免费| 在线观看免费视频a| 国产精品久久久久久久久久妞妞| 久久99精品视频一区97| www.97视频| 日韩电影免费网站| 亚洲欧洲午夜一线一品| 大乳护士喂奶hd| 亚洲视频一起| 日韩一级精品视频在线观看| 中文字幕久久av| av成人亚洲| 色综合av在线| 久久久久久久中文| av伦理在线| 亚洲成av人片一区二区梦乃| www婷婷av久久久影片| 精品176二区| 国产精品美日韩| 色一情一乱一伦一区二区三区 | 男人添女人下面高潮视频| 免费在线观看的电影网站| 亚洲欧美一区二区三区国产精品 | 国产乱码在线| 亚洲一区中文在线| av动漫在线播放| 91黄色在线| 一区二区三区四区乱视频| www.黄色网址.com| a在线免费观看| 亚洲精品国产精品乱码不99| www.国产亚洲| 国产精品偷拍| 精品电影在线观看| 日韩人妻精品无码一区二区三区| 日本不良网站在线观看| 日韩欧美在线视频观看| 国产精品99久久免费黑人人妻| 亚洲综合在线电影| 欧美日韩精品电影| 亚洲综合20p| 91精品导航| 亚洲精品电影在线| 精品无码人妻一区二区免费蜜桃| 久久综合国产| 欧美黑人xxx| 一级成人黄色片| 蜜乳av一区二区三区| 91亚洲国产精品| 日本黄色免费视频| 久久一夜天堂av一区二区三区| 色就是色欧美| 欧美黑人xx片| 色综合视频在线观看| 国内外成人免费在线视频| 我要色综合中文字幕| 日韩精品福利网站| 99超碰麻豆| 97久久久久久| 免看一级a毛片一片成人不卡| 亚洲小说区图片区| 青草热久免费精品视频| 亚洲无码精品国产| 成人黄色小视频在线观看| 欧美美乳视频网站在线观看| 久操视频在线观看| 精品福利在线观看| mm131国产精品| 国产日韩三级| 主播福利视频一区| 午夜影院在线看| 美女网站色91| 国产一区二区三区高清| 爱久久·www| 亚洲电影一级黄| 欧美成年人视频在线观看| 国产精品对白久久久久粗| 亚洲一级片在线看| 国产在线拍揄自揄拍无码视频| 久久蜜桃精品| 国产精品久久久久久久久久直播| av网站在线免费观看| 五月激情综合色| 欧洲在线免费视频| 成人婷婷网色偷偷亚洲男人的天堂| 久久琪琪电影院| 亚洲 小说区 图片区| 成人高清视频免费观看| 亚洲AV无码成人精品一区| 色偷偷色偷偷色偷偷在线视频| 欧美一区二区精美| 黄大色黄女片18免费| 国产农村妇女精品一二区| 91日韩久久| 日本暖暖在线视频| 欧美亚洲高清一区| 超碰97人人干| 亚洲精品乱码| 国产精品成人一区二区三区| 九九热视频在线观看| 亚洲妇女屁股眼交7| 手机精品视频在线| 久久五月天小说| 国产精品久久久久9999| 每日更新av在线播放| 激情久久av一区av二区av三区 | 成人视屏免费看| 自拍另类欧美| 欧美综合影院| 中文字幕v亚洲ⅴv天堂| 中文字幕+乱码+中文| 久久久久久久久久美女| 久久久久久久久久久视频| 国产精品tv| 午夜精品一区二区三区视频免费看| 国产99对白在线播放| 亚洲人亚洲人成电影网站色| av网站在线不卡| 欧美色婷婷久久99精品红桃| 国产成人精品av在线| 韩国中文免费在线视频| 欧美最猛性xxxxx直播| 亚洲黄色免费视频| 美女网站色91| 99亚洲国产精品| 久久久久久爱| 欧美激情久久久久久| 亚洲欧美另类视频| 婷婷久久综合九色综合绿巨人| 欧美大喷水吹潮合集在线观看| 亚洲伦伦在线| 日本一区二区三区四区高清视频 | 欧美在线观看禁18| 丰满的亚洲女人毛茸茸| 欧美a一区二区| 中文字幕一区二区三区有限公司| 久久天堂久久| 久久久久久久香蕉网| 日韩黄色影片| 欧美亚日韩国产aⅴ精品中极品| 国产精品视频在| 国产一区二区三区蝌蚪| 国产91沈先生在线播放| 欧美自拍一区| 国产精品无av码在线观看| 快射av在线播放一区| 欧美成人性战久久| 日韩黄色在线播放| 国产精品久久久爽爽爽麻豆色哟哟| 成人不卡免费视频| 在线亚洲激情| 亚洲欧美电影在线观看| 久久在线观看| 欧美资源在线观看| 日本美女在线中文版| 精品国产百合女同互慰| 欧美一区二区三区网站| 国产精品第五页| 国产免费一区二区三区最新6| 免费日韩av片| 91麻豆天美传媒在线| 农村少妇一区二区三区四区五区| 国产精品白嫩美女在线观看 | 一区二区久久久久久| 超碰97在线资源站| 久久国产精品区| 人人妻人人添人人爽欧美一区| 成人aaaa| 国产在线一区二区三区播放| 久久电影天堂| 91国自产精品中文字幕亚洲| 欧美人xxx| 亚洲美女性视频| www.97av.com| 欧美午夜精品久久久久久孕妇 | 国产精成人品免费观看| 国产成人精品一区二 | 国产99久久久国产精品潘金| 热久久精品免费视频| 欧美二区视频| 亚洲成人网上| 羞羞色国产精品网站| 97超级碰碰| 欧洲午夜精品| 国产精品电影一区| 三妻四妾的电影电视剧在线观看| 欧美另类交人妖| 欧美jizzhd欧美| 亚洲最新在线视频| 日韩中文字幕免费在线观看| 777xxx欧美| 日韩不卡高清视频| 欧美日韩亚洲91| 精品肉丝脚一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 粉嫩av懂色av蜜臀av分享| 国产二区国产一区在线观看| 日本高清久久久| 理论电影国产精品| 波多野结衣天堂| 久久久久欧美精品| 激情综合在线观看| 日韩午夜黄色| 九九爱精品视频| 极品日韩av| 男人添女人荫蒂免费视频| 欧美黄色大片网站| 狠狠精品干练久久久无码中文字幕| 日韩一区二区三区免费播放| 日本在线视频一区| 精品在线99| 欧美一区二视频在线免费观看| 欧美成人午夜77777| 国产精品一区二区在线观看| 操欧美女人视频| 国产精品美女久久久久av福利| 日韩精品一区二区三区中文| 成人在线精品视频| 美女精品久久| 69174成人网| 51精品国产| 国产亚洲精品自在久久| 秋霞影视一区二区三区| 蜜桃传媒视频麻豆一区 | 亚洲伊人成人网| 日韩欧美精品网站| 一级黄色在线视频| 色欧美片视频在线观看在线视频| 欧美一区二区三区久久久| 在线视频一区二区三区| 一区两区小视频| 91精品国产综合久久久久久久 | 中国一区二区视频| 欧美一区二区网站| 成人精品在线播放| 日韩乱码在线视频| 波多野结衣在线网站| 久久久精品国产网站| 欧美女同一区| 国产91在线播放| 日本午夜免费一区二区| 超碰97在线资源| 丝袜美腿综合| 亚洲ai欧洲av| 欧美精品97| 国产一区亚洲二区三区| 蜜桃av噜噜一区二区三区小说| 天天操精品视频| 91麻豆福利精品推荐| 欧美日韩国产一二三区| 亚洲一区二区偷拍精品| 在线观看日韩中文字幕| 4438成人网| 天天综合网天天综合| 中文字幕最新精品| 丰满诱人av在线播放| 国产91在线高潮白浆在线观看| 99久久99九九99九九九| 国内不卡一区二区三区| 日韩国产在线| 亚洲中文字幕无码av永久| 青青草国产精品亚洲专区无| 97精品人人妻人人| 国产精品毛片久久久久久久| 国产在线视频99| 7777精品伊人久久久大香线蕉完整版 | 精品三级在线| 国内一区在线| 午夜精品久久久久久久四虎美女版| 亚洲 欧美 综合 另类 中字| 免费观看久久久4p| 97香蕉碰碰人妻国产欧美| 综合亚洲深深色噜噜狠狠网站| 久久国产黄色片| 日韩一区二区三区免费观看| 国产中文字幕在线看| 欧美富婆性猛交| 亚洲综合视频| 日韩欧美在线一区二区| 在线精品一区| 99久久99精品| 国产精品美女久久久久久2018| 欧美一区二区激情视频| 日韩欧美在线观看一区二区三区| 免费国产在线视频| 97免费视频在线播放| 精品国产一区二区三区性色av| 日韩av影视| 国产精品久久久一区二区| 91精品人妻一区二区三区蜜桃2| 国产精品美日韩| 艳妇乳肉豪妇荡乳av无码福利| 国产婷婷97碰碰久久人人蜜臀| 少妇av在线| 亚洲综合在线小说| 久久精品播放| 午夜dv内射一区二区| 久久久亚洲精品一区二区三区| 久久久夜色精品| 欧美大片顶级少妇| 污的网站在线观看| 91久热免费在线视频| 日韩国产一区二区| 在线观看免费成人av| 久久亚洲影视婷婷| 国产免费一级视频| 亚洲欧美一区二区三区情侣bbw| а√天堂中文资源在线bt| av一区二区三区在线观看| 欧美精品一线| 波多野结衣电影免费观看| 亚洲日本在线看| 国产又色又爽又黄又免费| 在线视频一区二区| 国产香蕉久久| 波多野结衣三级在线| 国产综合色产在线精品| 中日韩一级黄色片| 日韩一区二区三区观看| 密臀av在线| 国产日本一区二区三区| 亚洲人体大胆视频| 超碰97在线资源站| 在线欧美一区二区| 天堂地址在线www| 亚洲japanese制服美女| 在线精品视频在线观看高清| www.偷拍.com| 亚洲最大成人综合| 香蕉av一区二区三区| 青青草国产精品一区二区| 国产伦精品一区二区三区视频 | 在线观看黄网站| 亚洲午夜av久久乱码| 亚洲电影二区| 欧美人与动牲交xxxxbbbb| www.爱久久.com| 在线观看日本网站| 色系列之999| 玖玖玖电影综合影院| 欧美综合在线播放| 国产欧美视频一区二区三区| 91麻豆一区二区| 久久免费视频这里只有精品| 国产精品一区二区99| 911福利视频| 午夜精品免费在线观看| 国内在线精品| caoporen国产精品| 亚洲欧美大片| 波兰性xxxxx极品hd| 精品福利av导航| 欧美激情喷水| 免费在线精品视频| 91日韩在线专区| 91麻豆国产在线| 欧美一区二区三区精品电影| 久久影院100000精品| 制服丝袜在线第一页| 欧美亚洲国产bt| 18aaaa精品欧美大片h| 亚洲春色在线视频| 成人av片在线观看| 中文字幕在线视频第一页| 国模视频一区二区| 日韩综合网站| av无码av天天av天天爽| 在线电影欧美成精品| 中文字幕在线视频久| 肉大捧一出免费观看网站在线播放| 93久久精品日日躁夜夜躁欧美| 一区二区三区播放| 日本久久91av| 亚洲大片在线| 亚洲精品久久久久久国|