首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有超级方法调用的继承方法的切入点

带有超级方法调用的继承方法的切入点
EN

Stack Overflow用户
提问于 2019-11-13 19:48:28
回答 1查看 121关注 0票数 0

我有以下课程

代码语言:javascript
复制
class A {
    public void someone() {
        helpMe();
    }
    private void helpMe() {
        // do something here
    }
}
class B extends A {
    public void help() {
        super.someone();
    }
}
class C extends A {
    public void me() {
        super.someone();
    }
}

所以我想在每次调用helpMe方法的时候做一些事情。A.helpMe()从不显式调用。对A.helpMe()的所有方法调用都是通过A.someone()实现的,可以通过B.help()C.me()进一步调用它。

helpMe包含所有其他类都需要的公共实现。

我尝试过的切入点

代码语言:javascript
复制
execution(* A.helpMe(..)) // does not work
execution(* A+.helpMe(..)) // does not work
execution(* *.helpMe(..)) // does not work

execution(* A.*(..)) // does not work
execution(* B.someone(..)) // does not work
execution(* A+.*(..)) // forms a point cut for B.help() and C.me() only
execution(* *.*(..)) // forms a point cut for B.help() and C.me() only
execution(* B.*(..)) // forms a point cut for B.help() only

我在某处读到superpointcuts是不允许的。如果是这样的话,有哪些有效的解决方法呢?

我尝试过用annotations获取pointcut,但也不起作用。

EN

回答 1

Stack Overflow用户

发布于 2019-11-13 20:23:29

1如果有疑问,请始终退回到完全硬编码的切入点,并再次向前工作:

代码语言:javascript
复制
execution(private void helpMe())

您确定您是using AspectJ而不是普通的Spring AOP (它不能建议使用私有方法)吗?

仅供参考:https://www.eclipse.org/aspectj/doc/next/progguide/language-joinPoints.html

call连接点不会捕获对非静态方法的超级调用

..。这不适用于execution

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58836455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档