簡體   English   中英

AspectJ-實現給定接口的類的靜態類型間聲明

[英]AspectJ - Static inter-type declaration on classes implementing a given interface

我想知道是否有可能(以及如何實現……)進行靜態的類型間聲明,該聲明對實現給定接口的所有類均有效。

在我的用例中,我有一個空接口:

public interface Delegate {}

和兩個實現它的類:

public class DelegateA implements Delegate {...}
public class DelegateB implements Delegate {...}

我想要一個方面在DelegateA和DelegateB上聲明一個靜態成員...以及所有將來實現我的接口的類!

我該怎么辦? 如果只有可能...

您確定要這樣做嗎? 無論如何,這是我為您解決的最佳方案:

public aspect MyAspect pertypewithin(Delegate+){
    public int oneFieldPerClass;
}

這將為代理的每個子類型實例化一個方面。 您可以通過以下方式訪問該字段:

MyAspect.aspectOf(DelegateA.class).oneFieldPerClass = 1;
MyAspect.aspectOf(DelegateB.class).oneFieldPerClass = 2;

Delegate d = new DelegateA(); 
MyAspect.aspectOf(d.getClass()).onFieldPerClass = 3;

以下線程也可能有幫助:

AspectJ-使用類型間聲明創建全局Logger字段

HTH,dsp

暫無
暫無

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

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