欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA 注解詳解及簡單實例

 更新時間:2017年05月12日 10:06:52   投稿:lqh  
這篇文章主要介紹了JAVA 注解詳解及簡單實例的相關(guān)資料,需要的朋友可以參考下

JAVA 注解詳解及簡單實例

何為注解

注解(Annotation)又稱為元數(shù)據(jù),在JDK1.5后引入,它的作用是:

生成文檔  這是注解的原始用途,可以通過注解生成JavaDoc文檔

跟蹤代碼的依賴性  可以通過注解替代配置文件,簡化項目的配置。現(xiàn)有的許多框架都采用這個功能減少自己的配置。

編譯檢查  在編譯時進行格式檢查,例如@Override

基礎(chǔ)注解

Java目前內(nèi)置了三種標(biāo)準(zhǔn)注解,以及四種元注解。四種元注解負責(zé)創(chuàng)建其他的注解。

三種標(biāo)準(zhǔn)注解

@Override,表示當(dāng)前的方法覆蓋超類中的方法

@Deprecated,如果程序員使用被這個注解注釋的元素,則編譯器會進行提示

@Suppress Warnings,忽略編譯器的警告

四種元注解

@Target,表示注解的適用范圍,例如@Target(ElementType.FIELD).

ElementType的枚舉值有

CONSTRUCTOR,用于構(gòu)造方法

FIELD,用于字段聲明,包括常量

LOCAL_VARIABLE,用于局部變量

METHOD,用于方法

PACKAGE,用于包聲明

PARAMETER,用于參數(shù)聲明

TYPE,用于類,接口

@Retention,表示注解的保留級別,例如@Retention(RetentionPolicy.RUNTIME).

RetentionPolicy的枚舉值有

Source,注解將被編譯器丟棄

Class,注解可以在class文件中使用,但是會被VM丟棄

Runtime,在VM的運行期間也會保留

@Document,將次注解在javaDoc文件中可見

@Inherited,允許子類繼承父類中的注解

自定義注解

創(chuàng)建注解

package com.rainman.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MethodLog {

  String method() default "do something";

  String opeator() default "someone";

}

@interface標(biāo)明該類型是一個注解的定義

對于“String method() default "dong something";”來說String是注解參數(shù)的數(shù)據(jù)類型,method是參數(shù)名,default用來設(shè)置默認值

注解的使用

package com.rainman.controller;

import com.rainman.annotation.MethodLog;

public class CelebrateController {

  @MethodLog(method="celebrate birthday",operator="we")
  public void celebrateBirthday(){

  }

  @MethodLog(operator = "we")
  public void celebrateNewYears(){

  }

  @MethodLog(method="celebrate harvest")
  public void celebrateHarvest(){

  }
  
  @MethodLog
  public void yeah(){
    
  }
}

注解使用的格式為"@Annotation(para=xxxx,...)",Annotation是注解名,para是注解中設(shè)置的參數(shù)名,參數(shù)如果不設(shè)置值,則會使用默認值

設(shè)置注解解析器

package com.rainman.annotation;

import com.rainman.controller.CelebrateController;
import java.lang.reflect.Method;


public class MethodLogParse {

  public static void parse(Class classType) throws Exception{
    Method[] array = classType.getMethods();
    for(Method method : array){
      System.out.println("=================="+method.getName()+"=================");
      if(method.isAnnotationPresent(MethodLog.class)){
        MethodLog methodLog = method.getDeclaredAnnotation(MethodLog.class);
        String str = String.valueOf(methodLog.operator());
        String str1 = String.valueOf(methodLog.method());

        System.out.println(str + " " + str1);
      }

    }
  }

  public static void main(String[] args){
    try {
      MethodLogParse.parse(CelebrateController.class);
    }catch(Exception e){
      e.printStackTrace();
    }
  }
}

輸出結(jié)果為

==================celebrateBirthday=================
we celebrate birthday
==================yeah=================
someone do something
==================celebrateNewYears=================
we do something
==================celebrateHarvest=================
someone celebrate harvest
==================wait=================
==================wait=================
==================wait=================
==================equals=================
==================toString=================
==================hashCode=================
==================getClass=================
==================notify=================
==================notifyAll=================

通過反射機制,遍歷方法,然后獲取方法的注解。注解可以注解類,方法,字段等等,所以也可以通過類似的方式獲取這些對象的注解,然后進行處理。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • java實現(xiàn)單詞小游戲

    java實現(xiàn)單詞小游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)單詞小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 超詳細的Spring Boot入門筆記(總結(jié))

    超詳細的Spring Boot入門筆記(總結(jié))

    本篇文章主要介紹了超詳細的Spring Boot入門筆記(總結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • MyBatis處理mysql主鍵自動增長出現(xiàn)的不連續(xù)問題解決

    MyBatis處理mysql主鍵自動增長出現(xiàn)的不連續(xù)問題解決

    本文主要介紹了MyBatis處理mysql主鍵自動增長出現(xiàn)的不連續(xù)問題解決,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot實現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式

    SpringBoot實現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式

    這篇文章主要給大家介紹了關(guān)于SpringBoot實現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • Java的HashTable源碼解讀

    Java的HashTable源碼解讀

    這篇文章主要介紹了Java的HashTable源碼解讀,HashTable繼承了Dictionary類,提供了一些字典相關(guān)的基本功能如添加、刪除、判空、獲取元素數(shù)量等,需要的朋友可以參考下
    2023-12-12
  • spring整合kaptcha驗證碼的實現(xiàn)

    spring整合kaptcha驗證碼的實現(xiàn)

    這篇文章主要介紹了spring整合kaptcha驗證碼的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 一文帶你掌握Java中Scanner類的使用

    一文帶你掌握Java中Scanner類的使用

    Scanner類是java.util包中的一個類,常用于控制臺的輸入,當(dāng)需要使用控制臺輸入時即可調(diào)用這個類。本文將通過一些簡單的例子為大家介紹一下Java中Scanner類的使用,需要的可以參考一下
    2023-04-04
  • mybatis注解與xml常用語句匯總

    mybatis注解與xml常用語句匯總

    最近一直在用mybatis,由于需要使用到了動態(tài)sql,遇到了一些問題,現(xiàn)在來總結(jié)一下,經(jīng)驗教訓(xùn)。下面這篇文章主要給大家總結(jié)介紹了mybatis注解與xml常用語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-09-09
  • 一文吃透Spring集成MyBatis

    一文吃透Spring集成MyBatis

    spring能集成很多的框架,是spring一個優(yōu)勢功能,通過集成功能,讓開發(fā)人員使用其他框架更方便,本文將給大家詳細介紹Spring如何集成MyBatis,,需要的朋友可以參考下
    2023-05-05
  • SpringBoot使用@Autowired為多實現(xiàn)的接口注入依賴

    SpringBoot使用@Autowired為多實現(xiàn)的接口注入依賴

    這篇文章主要介紹了SpringBoot使用@Autowired為多實現(xiàn)的接口注入依賴,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論