我正在使用Eclipse中的JADE。我尝试使用方面捕获每个执行行为的动作方法。它工作得很好,我甚至得到了执行行为的实例。但是这个实例并不允许我获得添加此行为的代理。因为在http://jade.tilab.com/doc/api/jade/core/behaviours/Behaviour.html中,行为允许我们知道哪个代理添加了此行为。以下图片显示了我的错误
感谢。
答案 0 :(得分:0)
感谢不更新问题,而不是发布实际的错误消息,甚至隐藏了读者视图中的类导入。 :-7
无论如何:你发布的代码应该有用,对我来说它在Eclipse中没有任何红色下划线。以下是针对您的切入点和建议的两种变体,就像您的丑陋演员和getThis()
的使用以及直接和类型安全的参数绑定更优雅:
package de.scrum_master.aspect;
import jade.core.behaviours.Behaviour;
public aspect ActionAspect {
before() :
execution(* Behaviour.action(..))
{
System.out.println(thisJoinPoint);
Behaviour behaviour = (Behaviour) thisJoinPoint.getThis();
behaviour.getAgent();
}
before(Behaviour behaviour) :
execution(* Behaviour.action(..)) && this(behaviour)
{
System.out.println(thisJoinPoint);
behaviour.getAgent();
}
}