注解@Retention用來修飾注解磷蛹,是注解的注解。稱為元注解。
Retention注解有一個屬性value,是RetentionPolicy枚舉類型,決定了Retention注解應(yīng)該如何去保持匹涮。
RetentionPolicy有三個值:SOURSE,CLASS 槐壳,RUNTIME。
1 注解只會保留在源文件中喜每,編譯時注解會被遺棄务唐。
2 注解會保留到class文件中,當(dāng)class文件中被加載時遺棄带兜,這是默認(rèn)的注解生命周期枫笛。
3 注解不僅被保留到class文件中,還會保留到虛擬機(jī)運(yùn)行時一直存在刚照。
對應(yīng)于:源文件刑巧,.class文件,內(nèi)存中的字節(jié)碼。
使用場景:
如果需要在運(yùn)行時反射去獲取注解信息啊楚,那只能用RUNTIME注解吠冤。
如果編譯時需要依賴注解進(jìn)行預(yù)處理,比如生成一些輔助代碼等恭理,如Butterknihe拯辙,Arounter就用CLASS注解。
如果只是做一些檢查性操作颜价,比如@Override和@SuppressWarnings涯保,使用
SOURSE注解,一般是供IDE使用周伦。