8

Groovy 2.0 を使用している Grails アプリの 1 つを 2.2.0 にアップグレードしたところ、次のコンパイル エラーが発生しました。

同じ名前のプライベート メソッドとパブリック/保護されたメソッドを混在させると、マルチメソッドが無効になり、予期しない動作を避けるために禁止されます。プライベート メソッドの名前を変更すると、問題が解決します。

次のコードに基づいています。

def getRootDomain(key) { }

private getRootDomain() { }

簡単な修正ですが、その理由をよりよく理解したいと思います。誰かが私にこれを説明できますか?

4

1 に答える 1

8

これは、groovy が呼び出すメソッドを選択する方法と、Java との潜在的な非互換性のためです。

メーリングリストでこのスレッドを見たことがありますか?

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

于 2013-01-15T14:07:31.870 に答える