欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Java中怎么自定義注解類

Java中怎么自定義注解類,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十多年品質(zhì),值得信賴!

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

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

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

@Documented //會(huì)被javadoc命令識(shí)別@Retention(RetentionPolicy.RUNTIME) //相當(dāng)于作用時(shí)期,比如:運(yùn)行期、編譯期@Target({ElementType.METHOD}) //相當(dāng)于作用域,比如方法、類public @interface MyValue {  String value();  //也可以這么寫,就是說(shuō),它的默認(rèn)值是hello  //String value() default "hello";}

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

public enum RetentionPolicy {  SOURCE,  CLASS,  RUNTIME}

public enum ElementType {  /** Class, interface (including annotation type), or enum declaration */  TYPE,  FIELD,  METHOD,  PARAMETER,  CONSTRUCTOR,  LOCAL_VARIABLE,  ANNOTATION_TYPE,  PACKAGE}

可以看到,是兩個(gè)枚舉類,也就是我們自定義的注解有一定的時(shí)間和空間作用域。好了,我們的自定義注解已經(jīng)完成了(對(duì)的,自定義注解就上邊那一段代碼),那我們就來(lái)看看要怎么有用呢?很容易啊,就和其他的注解一樣,寫在我們要用到的地方就好了。(對(duì)的,我確定不是在開玩笑)

public class Person {    @MyValue(value="張三")  private String name;  /*  為什么要寫setter和getter,很快你就會(huì)知道   */  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }}

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

Person person = new Person();System.out.println(person.getName());//null//這就很難受,按道理來(lái)說(shuō),不是應(yīng)該是張三嗎?

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

public static void main(String[] args) throws NoSuchFieldException {    Person person = new Person();    //按理來(lái)說(shuō),我們是拿到這個(gè)Person.class的所有的屬性,然后遍歷,來(lái)挨個(gè)注入,但是這里我們明明確我們的屬性名,所以就簡(jiǎn)單化了    Field  field = Person.class.getDeclaredField("name");    MyValue annotation = field.getAnnotation(MyValue.class);//拿到注解類    String name = 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)用。

關(guān)于Java中怎么自定義注解類問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

分享題目:Java中怎么自定義注解類
轉(zhuǎn)載源于:http://chinadenli.net/article30/jpscso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)外貿(mào)建站建站公司網(wǎng)站內(nèi)鏈網(wǎng)站營(yíng)銷外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名