作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试向我的 aspectJ 添加新建议。
public aspect Aspect11 {
pointcut namePC(String s, int i) : call (public String Simple.getName(String, int))&&args(s,i);
pointcut getData(int j) : get(public int Simple.trial)&&args(j);
after(String s, int i) : namePC(s, i) {
// this is the advice
System.out.println("Printing..." + s + " " + i);
System.out.println(thisJoinPoint.getSignature());
}
before(int j):getData(j)
{
System.out.println(j);
}
}
在上面的代码中,已经添加了切入点 namePC() 及其建议。这按预期工作。
以下是我的Simple.java
public class Simple {
private String name = "Aman";
String home;
int trial;
public String getName(String s, int i) {
System.out.println("Hi in getName()" + s + " " + i);
return name;
}
public static void main(String args[]) {
Simple simple = new Simple();
simple.trial=8;
System.out.println("AA" + simple.getName("In Simple", 1));
}
当我尝试添加新切点及其建议时:getData(),我收到警告:“Aspect11 中定义的建议尚未应用 [Xlint:adviceDidNotMatch]”我是 aspectJ 的新手,没有办法解决这个问题!!
最佳答案
您编辑的版本仍然不起作用,原因有二:
Simple.trial
不是public
作为你的切入点状态。get()
切入点匹配,如果你从来没有从成员那里读过?在您的代码中只有一个赋值,即 set()
切入点将匹配。试试这个:
public class Simple {
private String name = "Aman";
private int trial;
public static void main(String args[]) {
Simple simple = new Simple();
simple.trial = 8;
System.out.println(simple.getName("foo", 1));
}
public String getName(String s, int i) {
System.out.println("getName(" + s + ", " + i + ")");
return name;
}
}
public aspect Aspect11 {
pointcut namePC(String s, int i) :
call (public String Simple.getName(String, int)) && args(s,i);
pointcut setData(int j) :
set(int Simple.trial) && args(j);
after(String s, int i) : namePC(s, i) {
System.out.println("namePC: " + thisJoinPoint.getSignature());
}
before(int j) : setData(j) {
System.out.println("setData: " + j);
}
}
关于java - 当我尝试向 aspectJ 添加新建议时出现 "adviceDidNotMatch"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600625/
我正在尝试向我的 aspectJ 添加新建议。 public aspect Aspect11 { pointcut namePC(String s, int i) : call (public
我是 AspectJ 的新手,仍在学习如何编写代码。我正在尝试为 nextYear() 方法制作切入点和建议,但我不断收到“警告:(39, 0) ajc:未应用 ChristkindAspect 中定
我是一名优秀的程序员,十分优秀!