如何在具有建议的构造函数上应用切入点?

时间:2014-03-21 09:04:20

标签: java aop aspectj

大家好,我是aspectj的新手。在我的程序中,我需要在cunstructor调用中应用切入点,即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作为回复类型的建议。所以,任何人都可以告诉我我犯了什么错误。在这种情况下我该怎么做。

1 个答案:

答案 0 :(得分:2)

错误表示您正在拦截一个不会返回void的函数。

周围的建议不应该返回void,而是从调用中捕获输出并返回。

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

使用Object,使其适用于匹配的adviced函数(构造函数)可能返回的所有对象类型。