gpt4 book ai didi

java - 如何使方法返回类型作为AspectJ ITD中的当前类型?

转载 作者:行者123 更新时间:2023-12-01 14:45:10 24 4
gpt4 key购买 nike

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

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

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 注释的实际类型。

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

最佳答案

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

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

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

关于java - 如何使方法返回类型作为AspectJ ITD中的当前类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15498982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com