gpt4 book ai didi

java - 当我尝试向 aspectJ 添加新建议时出现 "adviceDidNotMatch"警告

转载 作者:行者123 更新时间:2023-11-30 07:22:34 26 4
gpt4 key购买 nike

我正在尝试向我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com