如何在构造函数上应用点切割(point cut)



大家好,我是新来的aspectj。在我的程序中,我需要在构造函数调用上应用切入点,即new Myclass();

我有一个点切割,像:

package pak;
//import java.io.PrintWriter;
import java.io.*;
public aspect HookYepmeAspect {

    pointcut constructorPkt(int paramInt, String paramString1):
        call(public  MyClass.new(int , String ))  && args( paramInt,  paramString1);
    void around(int paramInt, String paramString1):constructorPkt(paramInt,  paramString1) && within(com.yepme.*)
    {
        proceed(paramInt,  paramString1);
    }
}

但是它让我担心:

applying to join point that doesn't return void: constructor-call(void com.yepme.Contact.<init>(int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)) HookYepmeAspect.aj  /TmpHookAspectProject/src/pak   line 63 Java Problem

我还尝试了int作为返回类型的建议。所以,谁能告诉我,我犯了什么错误。在这种情况下我该怎么做呢?

错误提示你正在拦截一个不返回void的函数。

Around advice不应该返回void,而是捕获调用的输出并返回该输出。

public Object around(int paramInt, String paramString1):constructorPkt(paramInt,  paramString1) && within(com.yepme.*)
    {
        return proceed(paramInt,  paramString1);
    }

使用Object,这样它将适用于匹配的建议函数(构造函数)可能返回的所有对象类型。

相关内容

  • 没有找到相关文章

最新更新