亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中自定義注解類及使用實例解析

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

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

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

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

先寫一個自己的注解類

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

  String value();
  //也可以這么寫,就是說,它的默認(rèn)值是hello
  //String value() default "hello";

}

然后解析上邊用到的那兩個類:

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
}

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

public class Person {
  
  @MyValue(value="張三")
  private String name;

  /*
  為什么要寫setter和getter,很快你就會知道
   */
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }
}

然后我們在其他地方去拿

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

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

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

    //按理來說,我們是拿到這個Person.class的所有的屬性,然后遍歷,來挨個注入,但是這里我們明明確我們的屬性名,所以就簡單化了
    Field  field = Person.class.getDeclaredField("name");

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

    String name = annotation.value();//這個value()就是我們在MyValue類中的的屬性

    //然后我們就注入到這個類中,這時就用到了setter方法
    person.setName(name);

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

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

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

相關(guān)文章

  • SpringBoot配置@Configuration注解和@bean注解

    SpringBoot配置@Configuration注解和@bean注解

    這篇文章主要介紹了SpringBoot配置@Configuration注解和@bean注解,文章圍繞主題相關(guān)內(nèi)容展開詳細(xì)介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • Spring Boot 集成 Kafkad的實現(xiàn)示例

    Spring Boot 集成 Kafkad的實現(xiàn)示例

    這篇文章主要介紹了Spring Boot 集成 Kafkad的示例,幫助大家更好的理解和學(xué)習(xí)使用Spring Boot框架,感興趣的朋友可以了解下
    2021-04-04
  • Java實現(xiàn)線程同步方法及原理詳解

    Java實現(xiàn)線程同步方法及原理詳解

    這篇文章主要介紹了Java實現(xiàn)線程同步方法及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 手?jǐn)]一個Spring?Boot?Starter并上傳到Maven中央倉庫

    手?jǐn)]一個Spring?Boot?Starter并上傳到Maven中央倉庫

    本文主要介紹了手?jǐn)]一個Spring?Boot?Starter并上傳到Maven中央倉庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java原子變量類常見問題解決

    Java原子變量類常見問題解決

    這篇文章主要介紹了Java原子變量類常見問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot整合RabbitMQ實現(xiàn)六種工作模式的示例

    SpringBoot整合RabbitMQ實現(xiàn)六種工作模式的示例

    這篇文章主要介紹了SpringBoot整合RabbitMQ實現(xiàn)六種工作模式,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • spring data JPA 中的多屬性排序方式

    spring data JPA 中的多屬性排序方式

    這篇文章主要介紹了spring data JPA 中的多屬性排序方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Mybatis入門指南之實現(xiàn)對數(shù)據(jù)庫增刪改查

    Mybatis入門指南之實現(xiàn)對數(shù)據(jù)庫增刪改查

    數(shù)據(jù)持久層主要負(fù)責(zé)數(shù)據(jù)的增、刪、改、查等功能,MyBatis 則是一款優(yōu)秀的持久層框架,下面這篇文章主要給大家介紹了關(guān)于Mybatis入門指南之實現(xiàn)對數(shù)據(jù)庫增刪改查的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Java面向?qū)ο笾^承、構(gòu)造方法、重寫、重載

    Java面向?qū)ο笾^承、構(gòu)造方法、重寫、重載

    本章具體介紹了什么是構(gòu)造方法、繼承、重寫、重載以及創(chuàng)建方法,整篇文章用老司機(jī)和人類來舉例,圖解穿插代碼案例,需要的朋友可以參考下
    2023-03-03
  • Spring Boot整合JWT的實現(xiàn)步驟

    Spring Boot整合JWT的實現(xiàn)步驟

    本文主要介紹了Spring Boot整合JWT,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論