Groovy方法重载

Ano*_*man 1 grails groovy

我有两个域类,我想在我的服务中运行一个方法.服务的方法将对两个对象执行非常类似的操作,并且它使用的那些对象中的属性在两个具有相同名称的对象中.所以,而不是像这样做两个方法:

calculateTotalBalancesInd(IndividualRecord indRec) {
     //do something with indRec.accountsList
}
calculateTotalBalancesEnt(EntityRecord entRec) {
     //do something with entRec.accountsList
}
Run Code Online (Sandbox Code Playgroud)

是否有一种巧妙的方法(重载?)来制作一个可以对任何一个对象进行操作的方法?

谢谢

acs*_*404 5

Groovy有鸭子打字.只需将您的方法设为:

def calculateTotalBalancesEnt(rec) {
    rec.accountsList
}
Run Code Online (Sandbox Code Playgroud)

鸭子打字在这里解释:http://www.objectpartners.com/2013/08/19/optional-typing-in-groovy/

另一种方法,也许更安全一点:

创建上面的方法,但将其设置为私有,并从您定义的公共方法中调用它.这样api保持清洁,静态类型,但实现将是groovy.