一般使用自定義註解有三大步驟:
首先自定義註解;
在**中使用自定義的註解;
通過註解獲取資訊。
自定義註解的過程中一般會使用到@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...