我试图利用groovy比Java更动态的事实。
我想有一段代码

TypeA type = //do something to build an object
TypeA dbType = TypeA.findBySomethingAndSomething(something, somethingelse)
if(dbType != null)
   type.id = dbType.id
type.save()

但这可以用于支持相同findBySomethingAndSomething方法的多个对象。

是否可以说
def type = //do something to build an object
def dbType = type.findBySomethingAndSomething(type.identifier, type.otheridentifier)
if(dbType != null)
   type.id = dbType.id
type.save()

是否有“更好”的方法来完成此任务?
我试图避免使用大型switch语句或if / else系列,每种类型的功能基本上相同。

最佳答案

您始终可以通过instance.getClass()从实例获取类对象。因此,以下应工作:

instance.getClass().findBySomethingAndSomething(type.identifier, type.otheridentifier)

只要实例的类支持findBySomethingAndSomething

08-28 23:15