1

私は、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 シリーズを避けようとしています。

4

1 に答える 1

2

を介して、いつでもインスタンスからクラス オブジェクトを取得できますinstance.getClass()。したがって、次のように動作するはずです。

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

インスタンスのクラスがサポートしている限りfindBySomethingAndSomething

于 2010-02-01T21:22:18.683 に答える