当前位置: 首页 > 知识库问答 >
问题:

AspectJ围绕调用,包括方法调用后的方法体

孟沛
2023-03-14

所以我试图实现类似于Kotlin协程的东西在Java

目前,我试图拦截方法时,一个方法调用Waitable.waitFor()调用和所有的方法主体后,Waitable.waitFor()应调度

但在我当前的代码中,它只拦截方法调用,之后的方法体不包括在内

所以我想知道我的切入点表达式代码是错的吗?或者有什么更好的方法来实现这一点?

@Around("call(* org.imanity.framework.wait.Waitable.waitFor(..))")
public Object waitCall(ProceedingJoinPoint joinPoint) throws Throwable {
    Scheduler.runAfter(() -> joinPoint.proceed(), Long.parseLong(joinPoint.getArgs()[0]));
}

共有1个答案

宋铭
2023-03-14

调用后不可能捕获方法体。

想象你能做到。

  1. 它将如何与循环一起工作?
  2. 局部变量将存储在哪里?

PS:有一个项目Loom旨在将协同路由添加到java中。

附言:我们必须尽一切努力阻止那个项目,这是一个巨大的错误。

 类似资料:
  • 我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定

  • 当你在调用某一个方法的时候,Ruby会完成下面的步骤: 找到这个方法,我们把这个过程称作方法查找(method lookup); 执行这个方法,为了执行这个方法,Ruby需要一个叫做self的伪变量; 方法的查找 要理解Ruby的方法查找,你需要了解下面两个概念:接受者(receiver)和祖先链(ancestors chain)。接受者就是方法的调用者。例如,对调用an_object.displ

  • 使用Object::exec来调用对象的方法。参数原型: Variant Object::exec(const char *method_name, Variant args ...); method_name是方法的名称,字符串类型 args参数,args是变长参数,最多可以接受10个参数 如果参数超过10个,请使用更底层的Object::call方法 使用示例 Object redis =

  • super 带块的方法调用 yield 例: foo.bar() foo.bar bar() print "hello world\n" print Class::new 语法: [表达式 `.'] 标识符 [`(' 表达式 ... [`*' [表达式]],[`&' 表达式] `)'] [表达式 `::'] 标识符 [`(' 表达式 ... [`*' [表达式]],[`&' 表达式] `)']

  • 我正在开发小程序,我的类扩展了一个第三方api类,它有它的油漆(图形g)方法。这个类扩展了JComponent,并从它的油漆(图形g)调用super.paint(g)。现在我想直接从我的类调用JComponent油漆方法。有什么方法可以做到这一点。我在下面尝试,但给出错误 或者你可以通过跟随来理解这一点

  • Fire-and-forget 的调用方法极其简单。正如您从 快速开始 一节中了解到,您只需要传递一个具有相应方法和参数的lambda表达式: BackgroundJob.Enqueue(() => Console.WriteLine("Hello, world!")); Enqueue 方法不会立即调用目标方法,而是运行以下步骤: 序列化目标方法及其所有参数。 根据序列化的信息创建一个新的后台任