1. 程式人生 > >註解@Retention的作用

註解@Retention的作用

註解@Retention可以用來修飾註解,是註解的註解,稱為元註解。

Retention註解有一個屬性value,是RetentionPolicy型別,而RetentionPolice是一個列舉型別。

RetentionPolice這個列舉決定了Retention註解該如何保持,也可理解為Retention搭配RetentionPolice使用,而RetentionPolice列舉型別中有SOURCE,CLASS,RUNTIME三個值。

1:RetentionPolice.SOURCE:註解只保留在原始檔,當Java檔案編譯成class檔案的時候,註解被遺棄。

2:RetentionPolice.CLASS:註解被保留到class檔案,當JVM載入class檔案的時候,註解被遺棄,這是預設的生命週期。

3:RetentionPolice.RUNTIME:註解不僅儲存到Java檔案中,jvm載入class檔案之後任然存在。

這3個生命週期分別對應於:Java原始檔(java檔案) ----> .class檔案 ----> 記憶體中的位元組碼

如何選擇合適的註解生命週期呢?

首先要明確生命週期長度SOURCE < CLASS < RUNTIME,所以前者能作用的地方後者一定也能作用。

一般需要在執行時去動態獲取註解資訊的,那隻能用RUNTIME註解,比如@Deprecated使用了RUNTIME註解

如果要在編譯時進行一些預處理操作,比如生成一些輔助性程式碼,就用CLASS註解

如果只是做一些檢查性的操作,比如@SuppressWarnings和@Override,使用了SOURCE註解

註解@Override用在方法上,當我們想重寫一個方法時,在方法上加@Override,當我們方法的名字出錯時,編譯器就會報錯
註解@Deprecated,用來表示某個類或屬性或方法已經過時,不想別人再用時,在屬性和方法上用@Deprecated修飾
註解@SuppressWarnings用來壓制程式中出來的警告,比如在沒有用泛型或是方法已經過時的時候