自定義註解

2021-10-23 03:03:51 字數 1920 閱讀 8791

一般使用自定義註解有三大步驟:

首先自定義註解;

在**中使用自定義的註解;

通過註解獲取資訊。

自定義註解的過程中一般會使用到@target和@retention,其中: 取值

作用source

在原始檔中有效(即在原始檔中保留)

class

在class檔案中有效(即在class檔案中保留)

runtime

在執行時有效,可以被反射機制讀取 取值

所修飾的範圍

package

包type

類,介面,列舉,annotation型別

constructor

用於描述構造器

field

用於描述域

method

用於描述方法

local_variable

用於描述區域性方法

parameter

用於描述引數

舉個栗子,分別寫乙個自定義註解用於類和域上:

@target

(elementtype.type)

@retention

(retentionpolicy.runtime)

public @inte***ce

exa@target

(elementtype.field)

@retention

(retentionpolicy.runtime)

public @inte***ce

exafield

第二步,用於student類上:

@exa

("stu_table"

)public

class

student

public

void

setid

(int id)

public string getname()

public

void

setname

(string name)

public

intgetage()

public

void

setage

(int age)

}

第三步,反射獲取註解

public

class

demo

//獲取指定的註解

exa exa =

(exa) clz.

getannotation

(exa.

class);

system.out.

println

(exa.

value()

);//獲取類屬性的註解

field f = clz.

getdeclaredfield

("name");

exafield exafield = f.

getannotation

(exafield.

class);

system.out.

println

(exafield.

name()

+"->"

+ exafield.

type()

+"->"

+ exafield.

len())

;}catch

(exception e)

}}

執行結果為:

@exe

.exa

(value=

"stu_table"

)stu_table

name-

>varchar-

>

50

自定義註解

target elementtype.field retention retentionpolicy.runtime public inte ce setvalue以上就是乙個自定義的註解,下面來進行說明。target elementtype.field 表示支援該註解的程式元素,field就是屬性...

自定義註解

三個重要元註解 target 即註解的作用域,用於說明註解的使用範圍 即註解可以用在什麼地方,比如類的註解,方法註解,成員變數註解等等 elemenettype.constructor 構造器宣告 elemenettype.field 域宣告 包括 enum 例項 elemenettype.loca...

自定義註解

三個重要元註解 target 即註解的作用域,用於說明註解的使用範圍 即註解可以用在什麼地方,比如類的註解,方法註解,成員變數註解等等 elemenettype.constructor 構造器宣告 elemenettype.field 域宣告 包括 enum 例項 elemenettype.loca...