我是AspectJ的新手(在Eclipse中)。我发现编写一个简单类的问题,我需要获取一个输入参数(在这个例子中是一个简单的值)。
public aspect TestingAspectJ
{
pointcut start(int value) : target(int) && execution(void start(int)) && args(value);
after(int value) : start(value)
{
System.out.println("Hello World! My value is " + value);
}
}
AspectJ Compiler在“after(int value)”中抛出错误:此方法必须返回int类型的结果。
你能帮帮我吗?
感谢。
帕。
答案 0 :(得分:0)
这方面很好地汇编了。编译错误可能来自另一个类,你可以这样做:
int start(int number) {
System.out.println("Number = " + number);
}
即。你定义了一个int
返回类型的方法,但根本没有返回int
,或者至少不总是喜欢这个错误的例子:
int max(int a, int b, int c) {
if (a > b) {
if (a > c) {
return a;
} else if (b > c) {
return b;
} else {
return c;
}
}
}
在此示例中,如果a <= b
,则不返回任何错误。也许你做了类似于例1或2的事情。
顺便说一下,你的切入点确实有一个错误,但是没有一个错误导致它无法编译,只有一个错误使得它与任何方法执行都不匹配:你需要删除target(int)
部分因为它意味着你想匹配类int
的方法,但首先在JDK中定义int
(它不是由AspectJ编织的),其次int
根本不是类,而是基本类型。可能你想要这个:
public aspect TestingAspectJ {
pointcut start(int value) : execution(void start(int)) && args(value);
after(int value) : start(value) {
System.out.println("Hello World! My value is " + value);
}
}