天天看點

自定義注解 @Retention相關注意事項

記錄原因

isAnnotationPresent() 傳回False

解決方案

自定義注解時,如果想通過反射擷取注解資訊必須加上

@Retention(RetentionPolicy.RUNTIME)

聲明該注解的存活政策可以保留到運作時

擴充

@Retention

有3個值

@Retention(RetentionPolicy.SOURCE)

僅僅停留在源碼,編譯時去除

@Retention(RetentionPolicy.RUNTIME)

保留到運作時,通過反射可以擷取注解資訊 隻有保留到運作時,調用isAnnotationPresent()才傳回True

@Retention(RetentionPolicy.CLASS)

保留到編譯後的位元組碼,運作時無法獲得注解資訊