最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中自定義注解類及使用實(shí)例解析

 更新時(shí)間:2019年11月14日 09:21:26   作者:小魚吃貓  
這篇文章主要介紹了Java中自定義注解類并使用過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java中自定義注解類并使用過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

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

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

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

@Documented //會(huì)被javadoc命令識(shí)別
@Retention(RetentionPolicy.RUNTIME) //相當(dāng)于作用時(shí)期,比如:運(yùn)行期、編譯期
@Target({ElementType.METHOD}) //相當(dāng)于作用域,比如方法、類
public @interface MyValue {

  String value();
  //也可以這么寫,就是說,它的默認(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ì)的,自定義注解就上邊那一段代碼),那我們就來看看要怎么有用呢?很容易啊,就和其他的注解一樣,寫在我們要用到的地方就好了。(對(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
//這就很難受,按道理來說,不是應(yīng)該是張三嗎?

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

public static void main(String[] args) throws NoSuchFieldException {
    Person person = new Person();

    //按理來說,我們是拿到這個(gè)Person.class的所有的屬性,然后遍歷,來挨個(gè)注入,但是這里我們明明確我們的屬性名,所以就簡單化了
    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("通過自定義注解后的person的name是:" + person.getName());
  }

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java多線程編程中使用Condition類操作鎖的方法詳解

    Java多線程編程中使用Condition類操作鎖的方法詳解

    Condition是java.util.concurrent.locks包下的類,提供了對(duì)線程鎖的更精細(xì)的控制方法,下面我們就來看一下Java多線程編程中使用Condition類操作鎖的方法詳解
    2016-07-07
  • Spring?AOP核心功能示例代碼詳解

    Spring?AOP核心功能示例代碼詳解

    AOP面向切面編程,它是一種思想,它是對(duì)某一類事情的集中處理,而AOP是一種思想,而Spring?AOP是一個(gè)框架,提供了一種對(duì)AOP思想的實(shí)現(xiàn),它們的關(guān)系和loC與DI類似,這篇文章主要介紹了Spring?AOP統(tǒng)一功能處理示例代碼,需要的朋友可以參考下
    2023-02-02
  • java實(shí)現(xiàn)簡單的ATM項(xiàng)目

    java實(shí)現(xiàn)簡單的ATM項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單的ATM項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值

    使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值

    這篇文章主要介紹了使用@PathVariable注解如何實(shí)現(xiàn)動(dòng)態(tài)傳值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java方法遞歸調(diào)用實(shí)例解析

    Java方法遞歸調(diào)用實(shí)例解析

    這篇文章主要介紹了Java方法遞歸調(diào)用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • IDEA使用Tomcat運(yùn)行web項(xiàng)目教程分享

    IDEA使用Tomcat運(yùn)行web項(xiàng)目教程分享

    在非Spring Boot項(xiàng)目中運(yùn)行Nacos示例,需要手動(dòng)配置Tomcat容器,本文介紹了如何在IDEA中配置Tomcat,并詳細(xì)解決了配置過程中可能遇到的異常情況,步驟包括修改IDEA項(xiàng)目結(jié)構(gòu)、添加Web模塊、配置Artifacts和Tomcat Server
    2024-10-10
  • SpringBoot 配置提示功能(超詳細(xì))

    SpringBoot 配置提示功能(超詳細(xì))

    這篇文章主要介紹了SpringBoot 配置提示功能,本文給大家介紹的超詳細(xì),通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn)

    Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn)

    這篇文章主要介紹了實(shí)現(xiàn)Java使用easypoi快速導(dǎo)入導(dǎo)出的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的簡單定義與使用方法

    Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的簡單定義與使用方法

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的簡單定義與使用方法,簡單描述了隊(duì)列的功能、特點(diǎn),并結(jié)合java實(shí)例形式分析了隊(duì)列的簡單定義與使用方法,需要的朋友可以參考下
    2017-10-10
  • java中jvm逃逸問題分析

    java中jvm逃逸問題分析

    本篇文章給大家詳細(xì)總結(jié)了java中jvm逃逸問題的相關(guān)內(nèi)容,有興趣的朋友可以根據(jù)小編一起學(xué)習(xí)下。
    2018-02-02

最新評(píng)論

惠水县| 临江市| 平定县| 遂宁市| 厦门市| 河南省| 隆化县| 南靖县| 清河县| 延寿县| 阳曲县| 兴化市| 四会市| 泽普县| 铁岭市| 乳山市| 筠连县| 乌兰县| 宜君县| 江安县| 漾濞| 汕头市| 嵊州市| 武汉市| 广德县| 乐昌市| 弋阳县| 通州区| 新津县| 滦平县| 苍溪县| 江津市| 汾西县| 应用必备| 门头沟区| 息烽县| 江北区| 松阳县| 横山县| 重庆市| 婺源县|