如何匹配特定类的所有可用方法?
例如,我有以下课程hierarachy
A
/ | \
B C D
/ | \
E F I
|
T
我需要匹配T
中可用的所有方法,因此这些方法是T
本身定义的方法,也是类A
,C
,{的继承方法{1}}。
我来到了切入点,但对此并不满意,因为它匹配了许多与F
无关的其他类:
T
据我理解,这样的切入点aspectj将修改类execution(* A+.*(..)) && this(T)
,A
,B
,C
,D
,{{1}中定义的每个方法},E
,F
。我不想影响I
家庭的课程。理想情况下,只有T
受到影响(继承方法被aspectj代码覆盖)。有很多类,我想尽量减少对系统其余部分的影响,即我只需要修改类T
的行为,并且不希望这些修改影响其他类。
我可以将切入点重写为以下内容:T
。但这使我确保层次结构是正确的,并在实际层次结构发生变化时更新它。
感谢。
答案 0 :(得分:2)
你的假设是错误的,我只是尝试并研究了字节码。该建议只能编入A,C,F,T,因为this()
可以在编译期间静态确定。
更新:我忘了提到你的切入点只匹配从A及其子类派生的方法。正如您在标题中所说,如果您真的想要匹配所有继承的方法,请使用execution(* *(..)) && this(T)
。