注解@retention可以用來修飾注解,是注解的注解,稱為元注解。
retention注解有一個屬性value,是retentionpolicy類型的,enum retentionpolicy是一個枚舉類型,
這個枚舉決定了retention注解應該如何去保持,也可了解為rentention 搭配 rententionpolicy使用。
retentionpolicy有3個值:class runtime source
用@retention(retentionpolicy.class)修飾的注解,表示注解的資訊被保留在class檔案(位元組碼檔案)中當程式編譯時,但不會被虛拟機讀取在運作的時候;
用@retention(retentionpolicy.source )修飾的注解,表示注解的資訊會被編譯器抛棄,不會留在class檔案中,注解的資訊隻會留在源檔案中;
用@retention(retentionpolicy.runtime )修飾的注解,表示注解的資訊被保留在class檔案(位元組碼檔案)中當程式編譯時,會被虛拟機保留在運作時,
是以他們可以用反射的方式讀取。retentionpolicy.runtime 可以讓你從jvm中讀取annotation注解的資訊,以便在分析程式的時候使用.
參見類org.apache.hadoop.hbase.regionserver.annotationreadingpriorityfunction
用于确定高優先級的rpc操作
1:如果請求的方法使用了qospriority of qos_high注釋,則認為是高優先級
2:如果請求是操作meta region,則認為是高優先級(代碼層面針對此做了一些優化操作,避免過早的反序列化pb對象)