Могу ли я вызвать GORM «найти» методы объекта вместо класса? - PullRequest
1 голос
/ 02 февраля 2010

Я пытаюсь воспользоваться тем, что 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 ряда, который делает одно и то же для каждого типа.

1 Ответ

2 голосов
/ 02 февраля 2010

Вы всегда можете получить объект класса из экземпляра через instance.getClass(). Поэтому должно работать следующее:

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

, пока класс экземпляра поддерживает findBySomethingAndSomething

...