混合使用相同名称的私有和公共/受保护方法会导致多方法被禁用,并且禁止避免出现令人惊讶的行为

Gre*_*egg 8 grails groovy groovy-2 grails-2.2

我刚刚将我的一个Grails应用程序升级到2.2.0,它使用的是Groovy 2.0,现在我收到了这个编译错误:

混合使用相同名称的私有和公共/受保护方法会导致多方法被禁用,并且禁止避免出现令人惊讶的行为.重命名私有方法将解决问题.

基于以下代码:

def getRootDomain(key) { }

private getRootDomain() { }
Run Code Online (Sandbox Code Playgroud)

这是一个简单的修复,但我真的很想了解为什么更好.谁可以给我解释一下这个?

tim*_*tes 8

这是因为groovy选择调用哪种方法的方式,以及它与java的潜在不兼容性.

你在邮件列表上看过这个帖子了吗?

http://groovy.329449.n5.nabble.com/mixing-public-private-overloaded-methods-causes-compilation-error-td367147.html