grails - Groovy 方法重载

标签 grails groovy

我有两个域类,我希望我的服务中的一个方法可以在这两个域类上运行。服务的方法将对两个对象做非常相似的事情,并且它所使用的那些对象中的属性在两个具有相同名称的对象中。所以,不要像这样制作两种方法:

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/

相关文章:

image - Grails应用程序镜像路径?

grails - 在grails应用程序中将Neo4j插件与 'rest'类型一起使用时出现问题

java - 在 Groovy 中的集合上的 .findAll 闭包内进行赋值

java - Gradle的CopySpec过滤器方法签名与给定的示例有何关系?

grails - 有没有办法在Grails Web框架中生成子进程?

grails - 更改网址重定向

grails - 使用休眠基本类型的Grails

grails - 使用类为M:M关系建模时,Grails 2.0在Bootstrap中服务于不同的行为

java - 如何在 Java/Groovy 中开发数据透视表

grails - 在Grails Spring-Security驱动的应用程序中两次登录尝试失败后,如何提示用户?