AspectJ-实现给定接口的类的静态类型间声明



我想知道是否有可能(以及如何…)在实现给定接口的所有类上进行静态类型间声明。

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

public interface Delegate {}

以及实现它的两个类:

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

我想要一个方面来声明DelegateA和DelegateB上的静态成员。。。以及所有未来将实现我的接口的类!

我该怎么做?如果只有可能的话。。。

您确定要这样做吗?无论如何,这里是我解决您问题的最佳方案:

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

这将为Delegate的每个子类型实例化一个方面。您可以通过以下方式访问该字段:

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

最新更新