java - 针对静态方法的“target()”切入点的 AspectJ 警告“Xlint:adviceDidNotMatch”
问题描述
我是 AspectJ 的新手,并且仍在学习编写代码。我正在尝试为 nextYear() 方法创建切入点和建议,但我不断收到“警告:(39, 0) ajc:在 ChristkindAspect 中定义的建议尚未应用 [Xlint:adviceDidNotMatch]”。我知道这可能是因为没有直接创建对象,并且我无法使用 target(christkind enter code here
),但我找不到解决方案。有人可以帮忙吗?先感谢您!
pointcut nextYear(Christkind christkind, Population population):
call(* *Christkind.nextYear(Population))&& args(population) &&
target(christkind);
before(Christkind christkind,Population population): nextYear(christkind,population) {
System.out.println("New Year");
populationSize(population);
numbOfWIshes(population);
//wishStrength(population); }
在主要方法中,我有:
Christkind.nextYear(population);
解决方案
警告Xlint:adviceDidNotMatch
意味着在方面编织器或编译器范围内没有找到与方面中的切入点匹配的代码。因此,有问题的建议并未应用于(即融入)您的目标应用程序代码。
在您的屏幕截图中,我看到您的目标方法是静态的,您的主要方法调用它的方式也意味着:
Christkind.nextYear(population);
target()
切入点指示符检查目标对象是否是您指定的任何实例。但是对于静态方法,没有实例,因此名称为静态方法,而不是实例方法。因此,您的切入点将不匹配。因此,要么使您的方法成为非静态方法(如果您想对目标实例对象执行某些操作),要么您需要使用另一个切入点指示符,例如within(Christkind)
。似乎您甚至没有Christkind
在建议代码中使用假定的实例,而只使用了Population
实例。因此,只需摆脱target()
零件或将其替换为within()
.
随时提出相关(!)后续问题。
推荐阅读
- javascript - 在日期选择器中将假期变灰的简单方法?
- python - 渴望评估`map`、`zip`、`reversed`等
- python - Sympy `factor` 和 `simplify` 不能正常工作?
- python - 使用 pylibdmtx 包在树莓派中使用 python 读取数据矩阵
- dynamics-crm - “显示层次结构页面”按钮给出错误
- mysql - 在 SQL 中创建给定开始和结束值的直方图
- docker - 创建“STDIN”时出错:运行 skaffold dev 时发生内部错误
- android - Android CameraX 实时图像处理
- python - 用于 ATM 和 Arduino 矩阵键盘的 Tkinter GUI
- html - Flex 的成长不受儿童大小的影响