我有两个域类,我希望我的服务中的一个方法可以在这两个域类上运行。服务的方法将对两个对象做非常相似的事情,并且它所使用的那些对象中的属性在两个具有相同名称的对象中。所以,不要像这样制作两种方法:
calculateTotalBalancesInd(IndividualRecord indRec) {
//do something with indRec.accountsList
}
calculateTotalBalancesEnt(EntityRecord entRec) {
//do something with entRec.accountsList
}
有没有一种巧妙的方法(重载?)来制作一个可以对任一对象进行操作的方法?
谢谢
最佳答案
Groovy 有鸭子类型。只需像这样制作您的方法:
def calculateTotalBalancesEnt(rec) {
rec.accountsList
}
这里解释了鸭子打字:http://www.objectpartners.com/2013/08/19/optional-typing-in-groovy/
另一种方法,也许更安全一些:
创建上述方法,但将其设为私有(private)并从您定义的两个公共(public)方法中调用它。通过这种方式,api 保持更简洁、静态类型化,但实现会很常规。
关于grails - Groovy 方法重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24937475/