で失敗:パラメータ場合、のGroovy - DEFのパラメータを持つメソッドを呼び出すと、私はこのGroovyのメソッドの呼び出しが期待どおりに動作理由として説明を取得するために期待しています「不正なクラス名」
def f1(int n) {
return n + 1
}
println f1(1) // -> 2
しかし、 (具体的に「DEF N」の代わりに「int型のn」の)定義されていない、メソッド呼び出しを変更する必要がある:?
def f2(def n) {
return n + 1
}
println f2(1) // Exception: Illegal class name
println this.&f2(1) // -> 2
これが必要にするためにボンネットの下に何が起こっている
詳細で更新:
これは、スクリプト全体が1.groovyと呼ばれるファイル内の9行でのGroovy 2.4.5 JVM 1.8.0_51
とWindows上で - 何もありません。
私は、 "グルーヴィー1.groovy"
ライン8上の誤りがある使用して、コンソール(CMDR)からこれを実行しています:
キャッチ:ます。java.lang.ClassFormatError:不正なクラス名「3 $を3.runで3 $ f2の 3 $ f2の "クラスファイル内(3.groovy:8):不正なクラス名クラス・ファイル内の3 $ f2の ます。java.lang.ClassFormatError" F2"
'def f3(n){...'?これはGroovyのどのバージョンですか? – doelleri
'f2(1)'はうまく動作します。メソッドparamsにdefを追加することは全く必要ないことに注意してください。 –
私はあなたの例で問題はなく、GroovyのWebコンソールまたはJavaアプリケーションでテストしました。これは恐らくあなたがここに示していない文脈に関係しているでしょう –