我正在使用一个调用 Java 库的小型 Groovy 脚本。Java 库有一个方法m(String,int)
,其中第二个参数是 int 原始类型。
下面的脚本创建一个新的 int 变量并尝试调用该方法。
int year = 2013
def obj = dao.m("johndoe", year)
但是失败了,因为第二个参数的类型是java.lang.Integer
包装器,而不是原始 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]
如何声明一个变量来保存一个原始 int 以便我可以调用方法 m() ?
其他一些人已经被这个问题所困扰。来自Groovy 用户的这封电子邮件:
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.