簡體   English   中英

Java和@annotations

[英]Java and @annotations

在使用Java注釋時,我不太明白這一點。 這是一個例子:

我創建一個@Log注釋並添加一些功能(每個使用@Log注釋的方法在執行方法之前運行一些日志)。

現在我正在創建一個像這樣的新@SuperLog注釋:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Log
public @interface SuperLog {
     ............
}

這個@SuperLog必須提供@Log所做的所有內容,以及一些特定於@SuperLog的額外內容。

不幸的是,當我執行一些使用@SuperLog注釋的方法時,特定於@Log的日志不會執行。

我不明白為什么:@SuperLog用@Log注釋的事實並不意味着它從@Log“繼承”屬性? 不應該@SuperLog做@Log應該做的每一件事嗎?

正如這個問題概述的那樣,沒有注釋的繼承。

除此之外:請記住,注釋(主要)在運行時獲得意義,因為某些框架會對其存在作出反應。

換句話說:您可以創建一個框架,以某種方式支持繼承樹附帶的注釋。 但假設您正在使用某個現有框架,則必須接受此框架正在執行的操作。

我猜你'執行一些帶注釋的方法@SuperLog'意味着使用'Spring AOP'。

正如GhostCat所說, inheritance取決於框架的實現。 不幸的是,Spring AOP切入點還不支持元注釋。

你可以按照這個春天的改進

暫無
暫無

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

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