91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

注解如何在JAVA中使用

發布時間:2020-11-19 15:58:45 來源:億速云 閱讀:152 作者:Leah 欄目:編程語言

注解如何在JAVA中使用 ?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

何為注解

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

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

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

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

基礎注解

Java目前內置了三種標準注解,以及四種元注解。四種元注解負責創建其他的注解。

三種標準注解

@Override,表示當前的方法覆蓋超類中的方法

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

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

四種元注解

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

ElementType的枚舉值有

CONSTRUCTOR,用于構造方法

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

LOCAL_VARIABLE,用于局部變量

METHOD,用于方法

PACKAGE,用于包聲明

PARAMETER,用于參數聲明

TYPE,用于類,接口

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

RetentionPolicy的枚舉值有

Source,注解將被編譯器丟棄

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

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

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

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

自定義注解

創建注解

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標明該類型是一個注解的定義

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

注解的使用

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是注解中設置的參數名,參數如果不設置值,則會使用默認值

設置注解解析器

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();
    }
  }
}

輸出結果為

==================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=================

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寻乌县| 喀喇沁旗| 亳州市| 宁陕县| 融水| 涞源县| 读书| 新源县| 庆城县| 白河县| 晴隆县| 平度市| 凤城市| 繁峙县| 古浪县| 嘉鱼县| 鄂尔多斯市| 新乡县| 金昌市| 开封县| 酉阳| 神池县| 丽水市| 凤冈县| 达拉特旗| 黎川县| 镇平县| 琼结县| 甘谷县| 海晏县| 灵寿县| 西城区| 中西区| 峨山| 丹巴县| 祁东县| 新蔡县| 宁阳县| 慈溪市| 鄂温| 当阳市|