[英]How will I know the annotations of a Java class?
我需要知道Java類的注釋。 我正在使用龍目島。
樣本是:
@Data
@Builder
public class JavaBean {}
我嘗試了java.lang.annotation.Annotation []注記= JavaBean.class.getAnnotations,但它不顯示數據和生成器。
我認為您無法在JavaBean.class.getAnnotations中看到注釋,因為@Retention等於SOURCE。
在運行時不需要這種注釋。
有關更多詳細信息: 注釋源保留策略
祝你有美好的一天。
答案來自這些注釋:
@Target({TYPE, METHOD, CONSTRUCTOR})
@Retention(SOURCE)
public @interface Builder {
.....
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data {
.....
您獲得批注的代碼是正確的,但是@Retention(RetentionPolicy.SOURCE)
在這里起作用。
Java通過java.lang.annotation.RetentionPolicy
枚舉定義了3種類型的保留策略。 它具有SOURCE
, CLASS
和RUNTIME
。
1)帶有保留策略的注釋SOURCE
將僅與源代碼一起保留,並在編譯時丟棄。
2)具有保留策略CLASS
注釋將一直保留到編譯代碼為止,並在運行時被丟棄。
3)具有保留策略RUNTIME
批注將在運行時提供給JVM。
@Data
和@Builder
用@Retention(SOURCE)
標記,這意味着這些注釋在您的類的運行時不存在,因此您無法獲取這些注釋。
Lombok批注在實際編譯之前進行了預處理,因此,已編譯的類不包含它們作為批注,而是包含已生成的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.