[英]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;
以下线程也可能有帮助:
HTH,dsp
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.