Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使方法返回类型成为AspectJ ITD中的当前类型?_Java_Aop_Aspectj - Fatal编程技术网

Java 如何使方法返回类型成为AspectJ ITD中的当前类型?

Java 如何使方法返回类型成为AspectJ ITD中的当前类型?,java,aop,aspectj,Java,Aop,Aspectj,我需要将save()方法引入到使用我的@Persistent注释注释的任何类型。此方法只需将对象保存到基础数据库中,并返回对象的副本及其行id(例如Person personSaved=Person.save()) 为此,我使用AspectJ编写了给定方面(PersistentObject是一个提供save()方法的接口): 上面的代码看起来不错。但是我的问题是save()方法的返回类型。我想将其声明为实际类型,由@Persistent(例如Person)注释,而不是PersistentObje

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

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

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


你有办法解决我的问题吗?提前谢谢。

我知道你想要什么。技术上的答案很简单:不

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

  • 您希望
    save()
    返回一个有点违反直觉的对象,因为它不是getter。为什么要返回已拥有的对象?我希望
    save()
    具有
    void
    返回类型
  • 与针对特定类的开发相比,针对接口的开发不是更干净、更好吗?如果您返回了什么,我想接口类型并不是一个糟糕的选择

我知道这一条很旧,但仍被列为未答复。如果我的回答合适的话,请你接受并投赞成票好吗?谢谢
public aspect PersistencyAspect {
    declare parents: (@Persistent *) implements PersistentObject;

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