Java 活动对象@实现注释递归

Java 活动对象@实现注释递归,java,active-objects,Java,Active Objects,活动对象库()有问题。 假设我有这样的ao实体: @Implementation(PersonImpl.class) interface Person extends Entity{ public String getName(); public String setName(); } 以及该实体的实现类: class PersonImpl { private Person person; public PersonImpl(Person person

活动对象库()有问题。

假设我有这样的ao实体:

@Implementation(PersonImpl.class)
interface Person extends Entity{

    public String getName();

    public String setName();
}
以及该实体的实现类:

class PersonImpl {

    private Person person;

    public PersonImpl(Person person){
        this.person = person;
    }

    public String getName(){
       if( isTodayIsMonday() )
           return "I hate monday";
       else
           return person.getName();
    }
}
问题在
PersonImpl
类中。由于
person.getName()
我得到了无限递归(总是调用impl类)。如何跳过调用实现(在
PersonImpl
类中)而直接从数据库中获取名称?

根据,ActiveObjects通过检查调用堆栈自动避免了此问题:

private String getMyName(boolean isMonday) {
  if (isMonday) {
    return "I hate Monday";
  }
  return person.getName();
}
“我们可以使用它在堆栈上一步检查已定义的实现。如果我们发现它启动了方法调用,我们将跳过对已定义实现的重新调用,并实际正常执行方法调用。因此,从定义的实现对实体的任何调用都将跳过任何实现逻辑,从而避免递归。”

根据,ActiveObjects通过检查调用堆栈自动避免此问题:


“我们可以使用它在堆栈上一步检查已定义的实现。如果我们发现它启动了方法调用,我们将跳过对已定义实现的重新调用,并实际正常执行方法调用。因此,从实体定义的实现中对实体的任何调用都将跳过任何实现逻辑,从而避免递归。”

这是不好的。首先,我将在表示层中使用此方法(表示层中没有任何数据用于检查
isMonday
)。其次,我不想实现另一种获取名称的方法。但感谢您的快速响应:)这不好。首先,我将在表示层中使用此方法(表示层中没有任何数据用于检查
isMonday
).其次,我不想实现另一种获取名称的方法。但感谢您的快速响应:)