簡體   English   中英

我怎么知道Java類的注釋?

[英]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種類型的保留策略。 它具有SOURCECLASSRUNTIME

1)帶有保留策略的注釋SOURCE將僅與源代碼一起保留,並在編譯時丟棄。

2)具有保留策略CLASS注釋將一直保留到編譯代碼為止,並在運行時被丟棄。

3)具有保留策略RUNTIME批注將在運行時提供給JVM。

@Data@Builder@Retention(SOURCE)標記,這意味着這些注釋在您的類的運行時不存在,因此您無法獲取這些注釋。

Lombok批注在實際編譯之前進行了預處理,因此,已編譯的類不包含它們作為批注,而是包含已生成的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM