亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

注解(待完善)

Channe / 2702人閱讀

摘要:中提供了前四個元注解。在中新添加了最后一個注解。指定了注解可以用于的范圍??梢阅J(rèn)設(shè)置為空字符串如果沒有默認(rèn)值的話,在使用的時候則需要對它進(jìn)行賦值。反射程序運(yùn)行時獲取注解的值,設(shè)置為??梢允褂每兆址?/p>

分類

元注解(meta-annotation)

java元注解就是用來注解其他注解??梢岳斫鉃樵⒔馐瞧渌x的注解的基礎(chǔ)。
元注解有 @Retention、@Documented、@Target、@Inherited@Repeatable 。jdk1.5中 提供了前四個元注解。在jdk1.8中新添加了最后一個注解。
下面我們開始新定義一個注解,對這些元注解加以說明。

首先我們定義一個@GoodMan的注解

@Retention

這個注解是用來解釋說明它所注解的注解的存活期。
它的值可以有如下三種

RetentionPolicy.SOURCE:注解只在源碼階段保留,在編譯器進(jìn)行編譯時它將被丟棄忽視。

RetentionPolicy.CLASS:注解只被保留到編譯進(jìn)行的時候,它并不會被加載到 JVM 中。

RetentionPolicy.RUNTIME:注解可以保留到程序運(yùn)行的時候,它會被加載進(jìn)入到 JVM 中,所以在程序運(yùn)行時可以獲取到它們

@Documented

在使用javadoc工具生成幫助文檔的時候保留其注解信息。也就是引用這個元注解的注解在javadoc文檔中會保留自己的注解信息。

@Target

指定了注解可以用于的范圍。有以下取值

ElementType.ANNOTATION_TYPE 可以給一個注解進(jìn)行注解

ElementType.CONSTRUCTOR 可以給構(gòu)造方法進(jìn)行注解

ElementType.FIELD 可以給屬性進(jìn)行注解

ElementType.LOCAL_VARIABLE 可以給局部變量進(jìn)行注解

ElementType.METHOD 可以給方法進(jìn)行注解

ElementType.PACKAGE 可以給一個包進(jìn)行注解

ElementType.PARAMETER 可以給一個方法內(nèi)的參數(shù)進(jìn)行注解

ElementType.TYPE 可以給一個類型進(jìn)行注解,比如類、接口、枚舉

@Inherited

繼承。如果一個超類引用該注解,則它的子類默認(rèn)擁有這個超類所具有的的注解

@Repeatable

可以理解為引用了@repeatable的注解可以多次引用同一個注解,多次賦值。

定義

注解通過@interface關(guān)鍵字來定義

public  @interface GoodMan {

}

從某種意義上可以講注解是一個tag。

這里我們可以理解為在這定義了一個GoodMan的標(biāo)簽。

在這個注解里我們可以定義GoodMan具有什么屬性。

應(yīng)用

在GoodMan中

public @interface GoodMan {

public String personality();

public String quality() default "selfless";

}

注解只有成員變量(無形參的方法申明),沒有方法。上述代碼中定義了quality屬性,并且為它添加了default默認(rèn)值"kindness"。默認(rèn)值不可以為null。可以默認(rèn)設(shè)置為""空字符串

如果沒有默認(rèn)值的話,在使用的時候則需要對它進(jìn)行賦值。賦值方式是在注解的括號內(nèi)用value="",多個屬性則用逗號隔開。如果只有一個屬性,則可以直接在括號內(nèi)寫上value的值,不需要以value=""的形式。

現(xiàn)在一個GoodMan的注解就寫好了,這個注解中,我們申明了兩個屬性:personalityquality。其中給quality一個默認(rèn)值,所以在接下來我們應(yīng)用到GoodMan的時候可以不對其進(jìn)行定義;

@GoodMan(personality = "selfless")
public class Ironman {
}

Ironman中我們應(yīng)用了注解GoodMan并且對未設(shè)置默認(rèn)值的personality賦了selfless的值。

在本次的例子中,可以這樣講GoodMan是一個"標(biāo)簽",我們在Ironman上引用這個"標(biāo)簽",表示Ironman具備GoodMan這個標(biāo)簽下的屬性,具備個人品質(zhì)quality是友好kindness。并且為它定義了personality為selfless。

下面講一下本人理解的注解執(zhí)行的過程:
1.通過@interface定義了一個注解,并在里面添加了我們需要的屬性
2.在我們需要的地方@注解名(屬性值)來引用我們的注解

但是這兩個步驟中需要有橋梁,只是單純的應(yīng)用這個注解,對于我們的代碼沒有任何作用。

此時反射注解處理器就登場了。
反射(Reflect):程序運(yùn)行時獲取注解的值,@Retention設(shè)置為RUNTIME。則需要在注解中引用@Retention(RetentionPolicy.RUNTIME)
注解處理器(AbstractProcessor):編譯時獲取注解的值,@Retention的值為CLASS。則需要在注解中引用@Retention(RetentionPolicy.CLASS)

反射
注解需要定義的有運(yùn)行時間,作用域。而作用域無論是field,method還是construtor都是有g(shù)etAnnotation來獲取注解的

TIPS

是否包含注解的代碼對于java編譯器來講生成的java虛擬機(jī)指令是相同的。

注解從某種意義上來講就是根據(jù)所選 處理工具 來識別代碼中的注解。

注解是可重復(fù)的,如果注解的編寫者將其申明為可重復(fù)的,則可以多次重復(fù)使用一個注解。

注解的默認(rèn)值不能設(shè)置為null,注解元素永遠(yuǎn)不能為 null??梢允褂每兆址?".

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/75544.html

相關(guān)文章

  • IMI 基于 Swoole 開發(fā)的協(xié)程 PHP 開發(fā)框架 常駐內(nèi)存、協(xié)程異步非阻塞

    摘要:介紹是基于開發(fā)的協(xié)程開發(fā)框架,擁有常駐內(nèi)存協(xié)程異步非阻塞等優(yōu)點(diǎn)。宇潤我在年開發(fā)并發(fā)布了第一個框架,一直維護(hù)使用至今,非常穩(wěn)定,并且有文檔。于是我走上了開發(fā)的不歸路 showImg(https://segmentfault.com/img/bVbcxQH?w=340&h=160); 介紹 IMI 是基于 Swoole 開發(fā)的協(xié)程 PHP 開發(fā)框架,擁有常駐內(nèi)存、協(xié)程異步非阻塞IO等優(yōu)點(diǎn)。...

    airborne007 評論0 收藏0
  • APT案例之點(diǎn)擊事件

    摘要:楊充一定時間內(nèi)該點(diǎn)擊事件只能執(zhí)行一次用來修飾這是一個什么類型的注解。楊充自定義編譯器獲取遍歷,并生成代碼配置文件文件配置的作用是向系統(tǒng)注冊自定義注解處理器,執(zhí)行編譯時使用進(jìn)行處理。 目錄介紹 01.創(chuàng)建項(xiàng)目步驟 1.1 項(xiàng)目搭建 1.2 項(xiàng)目功能 02.自定義注解 03.創(chuàng)建Processor 04.compiler配置文件 05.編譯jar 06.如何使用 07.編譯生成代...

    cyixlq 評論0 收藏0
  • 利用反射和注解,拷貝類型相同,屬性名不同的對象

    摘要:前言最近開發(fā)遇到一個問題,兩個對象進(jìn)行屬性值拷貝。理論上來說可以直接借助來進(jìn)行拷貝,奈何兩個對象屬性名不同,懵逼臉。 1、前言 最近開發(fā)遇到一個問題,兩個對象進(jìn)行屬性值拷貝。理論上來說可以直接借助org.springframework.beans.BeanUtils.copyProperties(Object source, Object target)來進(jìn)行拷貝,奈何兩個對象屬性名不...

    forrest23 評論0 收藏0
  • 基于 java 注解的 csv 文件讀寫框架

    摘要:基于注解生成加簽驗(yàn)簽。是否寫入頭,建議第一次寫入指定,避免中文亂碼指定文件編碼默認(rèn)不進(jìn)行字段排序無待寫入的文件列表方法默認(rèn)值說明必填創(chuàng)建實(shí)例,并且指定待讀取文件路徑。 csv 基于 java 注解生成加簽驗(yàn)簽 csv。 開源地址: github csv) 創(chuàng)作原由 以前覺得 csv 文件的多寫非常簡單,就懶得封裝。 最近一個月寫了兩次 csv 文件相關(guān)的東西,發(fā)現(xiàn)要處理的細(xì)節(jié)還是有的,...

    Gemini 評論0 收藏0
  • 基于 java 注解的 csv 讀寫框架更加簡單靈活

    摘要:創(chuàng)作原由以前覺得文件的讀寫非常簡單,就懶得封裝。為了解決上述問題,此框架應(yīng)運(yùn)而生。寫入文件其中列表構(gòu)建構(gòu)建基于注解的測試列表列表你好生成文件內(nèi)容名稱生日你好讀取文件測試日志信息你好集合類有時候?qū)ο笾袝瑪?shù)組等常見集合。 CSV 基于 java 注解的 csv 讀寫框架。 相關(guān)框架 Apache commons-csv super-csv 簡單看了下,這兩個框架提供的特性都非常的基礎(chǔ)。...

    includecmath 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<