大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java中怎么自定義注解

Java中怎么自定義注解

更新時(shí)間:2020-02-17 13:27:33 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2760次


Java中怎么自定義注解


  在Java框架中,經(jīng)常會(huì)使用注解,而且還可以省很多事,來(lái)了解下自定義注解。


  注解是一種能被添加到j(luò)ava代碼中的元數(shù)據(jù),類、方法、變量、參數(shù)和包都可以用注解來(lái)修飾。注解對(duì)于它所修飾的代碼并沒(méi)有直接的影響


  先寫一個(gè)自己的注解類


  @Documented//會(huì)被javadoc命令識(shí)別


  @Retention(RetentionPolicy.RUNTIME)//相當(dāng)于作用時(shí)期,比如:運(yùn)行期、編譯期


  @Target({ElementType.METHOD})//相當(dāng)于作用域,比如方法、類


  public@interfaceMyValue{


  Stringvalue();


  //也可以這么寫,就是說(shuō),它的默認(rèn)值是hello


  //Stringvalue()default"hello";


  }


  然后解析上邊用到的那兩個(gè)類:


  publicenumRetentionPolicy{


  SOURCE,


  CLASS,


  RUNTIME


  }


  publicenumElementType{


  /**Class,interface(includingannotationtype),orenumdeclaration*/


  TYPE,


  FIELD,


  METHOD,


  PARAMETER,


  CONSTRUCTOR,


  LOCAL_VARIABLE,


  ANNOTATION_TYPE,


  PACKAGE


  }


  可以看到,是兩個(gè)枚舉類,也就是我們自定義的注解有一定的時(shí)間和空間作用域。


  好了,我們的自定義注解已經(jīng)完成了(對(duì)的,自定義注解就上邊那一段代碼),那我們就來(lái)看看要怎么有用呢?很容易啊,就和其他的注解一樣,寫在我們要用到的地方就好了。(對(duì)的,我確定不是在開(kāi)玩笑)


  publicclassPerson{


  @MyValue(value="張三")


  privateStringname;


  /*


  為什么要寫setter和getter,很快你就會(huì)知道


  */


  publicStringgetName(){


  returnname;


  }


  publicvoidsetName(Stringname){


  this.name=name;


  }


  }


  然后我們?cè)谄渌胤饺ツ?/p>


  Personperson=newPerson();


  System.out.println(person.getName());//null


  //這就很難受,按道理來(lái)說(shuō),不是應(yīng)該是張三嗎?


  大家都知道,像Spring這種框架都是通過(guò)反射來(lái)實(shí)現(xiàn)的,我們就模擬一個(gè)“編譯類”,我們是在屬性上用的注解,所以就先用反射來(lái)拿到類的所有屬性


  publicstaticvoidmain(String[]args)throwsNoSuchFieldException{


  Personperson=newPerson();


  //按理來(lái)說(shuō),我們是拿到這個(gè)Person.class的所有的屬性,然后遍歷,來(lái)挨個(gè)注入,但是這里我們明明確我們的屬性名,所以就簡(jiǎn)單化了


  Fieldfield=Person.class.getDeclaredField("name");


  MyValueannotation=field.getAnnotation(MyValue.class);//拿到注解類


  Stringname=annotation.value();//這個(gè)value()就是我們?cè)贛yValue類中的的屬性


  //然后我們就注入到這個(gè)類中,這時(shí)就用到了setter方法


  person.setName(name);


  System.out.println("通過(guò)自定義注解后的person的name是:"+person.getName());


  }


  是的,這樣我們就通過(guò)了自定義注解給Person注入了一個(gè)name屬性,但是在實(shí)際運(yùn)用中不可能這么復(fù)雜,這只是入門了一下,我們可以將這個(gè)“模擬的編譯類”組裝成一個(gè)工具類,以便我們?cè)趯?shí)際中運(yùn)用。


Java中怎么自定義注解


  以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java中怎么自定義注解”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 免费观看一区二区 | 久久成人毛片 | 亚洲色欲色欲www | 精品一区二区三区在线观看视频 | 五月久久婷婷综合片丁香花 | 91久久精品日日躁夜夜躁欧美 | 亚洲手机看片 | www.四虎影视.com | 国产精品11页 | 99精品视频在线 | 午夜成人免费影院 | 欧美日韩国产一区二区 | 欧美大片毛片大片 | 欧美日本在线播放 | 色老头福影院韩国激情影院 | 九九精品久久 | 久久精品视频免费播放 | 伊人色网站| 久久久久久青草大香综合精品 | 四虎影院永久在线观看 | 欧美成人爽毛片在线视频 | 日韩伦理一区二区三区 | 久久亚洲精品中文字幕第一区 | 黄色影院免费看 | 中文字幕亚洲第一 | 久久国产精品无码网站 | 午夜精品福利视频 | 亚洲国产婷婷香蕉久久久久久 | 日本高清不卡在线 | 久久一日本道色综合久久m 久久一色本道亚洲 | 久久国产精品广西柳州门 | 鲁啊鲁啊鲁在线视频播放 | 日本网站在线播放 | 99热久久精里都是精品6 | 久久久夜间小视频 | 欧美成人一区二区三区不卡 | 精品精品国产理论在线观看 | 国产色资源 | 99在线热播 | 日韩精品成人a在线观看 | 日韩欧美亚洲在线 |