繁体   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