@retention(retentionpolicy.source) //註解僅存在於原始碼中,在class位元組碼檔案中不包含
@retention(retentionpolicy.class) // 預設的保留策略,註解會在class位元組碼檔案中存在,但執行時無法獲得,
@retention(retentionpolicy.runtime) // 註解會在class位元組碼檔案中存在,在執行時可以通過反射獲取到
首 先要明確生命週期長度 source < class < runtime ,所以前者能作用的地方後者一定也能作用。一般如果需要在執行時去動態獲取註解資訊,那只能用 runtime 註解;如果要在編譯時進行一些預處理操作,比如生成一些輔助**(如 butterknife),就用 class註解;如果只是做一些檢查性的操作,比如 @override 和 @suppresswarnings,則可選用 source 註解。
原始碼為:
@documented
@retention(retentionpolicy.runtime)
@target(elementtype.annotation_type)
public @inte***ce target
@target(elementtype.type) //介面、類、列舉、註解
@target(elementtype.field) //字段、列舉的常量
@target(elementtype.method) //方法
@target(elementtype.parameter) //方法引數
@target(elementtype.constructor) //建構函式
@target(elementtype.local_variable)//區域性變數
@target(elementtype.annotation_type)//註解
@target(elementtype.package) ///包
class實現了annotatedelement介面
java常用註解
這兩天公司在做乙個 專案,框架使用的是springmvc框架,在這裡對這幾個註解做乙個歸納整理 專案中的controller層使用 controller註解 service採用 service註解 例 service userservice 註解是告訴spring,當spring要建立userser...
Java註解學習
inte cepublic inte ce testannotation testannotation public class test retention retentionpolicy.runtime public inte ce testannotation elementtype.cons...
java註解草稿
處理註解 在class位元組中,會記錄該類或者該類的方法上的註解 一般註解的處理,不存在 動 靜 形式 test public void annotacationresovle for method m u.getclass getmethods if rh null 如果獲取到動態 類中的原始註解...