Java ライブラリを呼び出す小さな Groovy スクリプトを使用しています。Java ライブラリにはメソッドm(String,int)
があり、2 番目のパラメーターは int プリミティブ型です。
以下のスクリプトは、新しい int 変数を作成し、メソッドの呼び出しを試みます。
int year = 2013
def obj = dao.m("johndoe", year)
java.lang.Integer
しかし、2 番目の引数の型がプリミティブ int ではなくラッパーで
あるため、失敗します。groovy.lang.MissingMethodException: No signature of method: com.sun.proxy.$Proxy11.m() is applicable for argument types: (java.lang.String, java.lang.Integer) values: [IN-94158-11, 2013]
メソッド m() を呼び出せるように、プリミティブ int を保持する変数を宣言するにはどうすればよいですか?
この問題に悩まされている人もいます。Groovy Users のこのメールから:
As we stated earlier, it doesn’t matter whether you declare or cast a variable to be
of type int or Integer. Groovy uses the reference type (Integer) either way.