为什么我不能从行为实例中获取代理?

时间:2015-04-06 20:51:24

标签: java aspectj agents-jade

我正在使用Eclipse中的JADE。我尝试使用方面捕获每个执行行为的动作方法。它工作得很好,我甚至得到了执行行为的实例。但是这个实例并不允许我获得添加此行为的代理。因为在http://jade.tilab.com/doc/api/jade/core/behaviours/Behaviour.html中,行为允许我们知道哪个代理添加了此行为。以下图片显示了我的错误

enter image description here

感谢。

1 个答案:

答案 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();
    }
}