有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想知道这是否可能(以及如果可能的话如何…)创建一个静态类型间声明,该声明适用于实现给定接口的所有类

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

public interface Delegate {}

和两个实现它的类:

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    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 - Creating a global Logger field using an Inter-Type Declaration

    数字信号处理器