首頁  >  文章  >  Java  >  AspectJ能否實作介面及其方法的註解繼承?

AspectJ能否實作介面及其方法的註解繼承?

Patricia Arquette
Patricia Arquette原創
2024-10-24 00:35:30310瀏覽

Can AspectJ Achieve Annotation Inheritance for Interfaces and Their Methods?

AspectJ 可以模擬介面及其方法的註解繼承嗎?

Java 註解繼承受到限制,在介面、方法或方法上定義註解註解不是透過實作類別、重寫方法或使用註解的註解的類別繼承的。此限制適用於在 JVM 約束下執行的 AspectJ。

解決方案:在特定情況下模擬註解繼承

雖然註解繼承的通用解決方案不可用,但有一種解決方法特定介面或方法存在:

<code class="java">public aspect MarkerAnnotationInheritor {
  // Implementing classes inherit the marker annotation
  declare @type: MyInterface+ : @Marker;
  // Overriding 'two' method inherits the annotation
  declare @method : void MyInterface+.two() : @Marker;
}</code>

實作:

  • ITD(類型間定義)手動將註解新增至介面並實作/覆蓋類別/方法。
  • 介面或方法上的實際註解可以刪除。

結果:

控制台立即登入列印:

execution(de.scrum_master.app.Application())
execution(void de.scrum_master.app.Application.two())

。 >方面可以嵌入到介面中,將實現合併到一個位置。將檔案重新命名為 .aj 以供編譯器識別。

以上是AspectJ能否實作介面及其方法的註解繼承?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn