J'essaie de profiter du fait que groovy est plus dynamique que java. Je voudrais avoir un bloc de code qui nePuis-je appeler les méthodes "find" de GORM sur un objet au lieu de la classe?
TypeA type = //do something to build an object
TypeA dbType = TypeA.findBySomethingAndSomething(something, somethingelse)
if(dbType != null)
type.id = dbType.id
type.save()
mais qui peuvent travailler pour plusieurs objets qui prennent en charge la même méthode de findBySomethingAndSomething.
Est-il possible de dire
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()
Y at-il une "meilleure" façon d'y arriver? J'essaie d'éviter une grande déclaration switch ou if/else qui fait essentiellement la même chose pour chaque type.
Pensez à utiliser getClass() à la place. Cela ne fera pas beaucoup de différence dans ce cas - mais c'est une bonne habitude à prendre au cas où 'l'instance' est une carte. –
Bon conseil John, ça m'a fait sortir plusieurs fois quand les tests passent une carte pour se moquer d'une instance - j'ai mis à jour ma réponse. –