0

我需要将save()方法引入使用我的注释注释的任何类型@Persistent。此方法只是将对象保存到底层数据库中并返回对象的副本及其行 ID(例如Person personSaved = person.save()

为此,我使用 AspectJ 编写了给定的方面(PersistentObject是一个提供接口的save()方法):

public aspect PersistencyAspect {
    declare parents: (@Persistent *) implements PersistentObject;

    public PersistentObject PersistentObject.save() {
        // perform the save operation and return a copy of this
    }
}

上面的代码看起来不错。但我的问题是save()方法的返回类型。我想将它声明为由@Persistent(例如 Person)而不是PersistentObject.

您对我的问题有解决方案吗?提前致谢。

4

1 回答 1

1

我明白你想要什么。技术答案很简单:不。

OTOH,我认为这不是一个很大的损失,因为无论如何你想要的似乎都不是好的应用程序设计:

  • 你想save()返回一个有点违反直觉的对象,因为它不是一个 getter。为什么要返回已经拥有的对象?我希望save()有一个void返回类型。
  • 是不是针对接口开发比针对特定类更清洁和更好?如果你返回任何东西,我想接口类型不是一个糟糕的选择。
于 2013-03-23T12:55:16.017 回答