在JAVA中要把string转换成int,即用:Integer.parseInt(str),即可,但是在Grails中发现没有找到Integer的这个方法,报以下错误
groovy.lang.MissingMethodException: No signature of method: static java.lang.Integer.parseInt() is applicable for argument types: (java.lang.Integer) values: [50]其实在Grails中定义一个变量都是用def str,也就是他会自动帮你转换,但是用到日历的时候,他就不能自动转换了,看以下代码,其中month
def month = "2"
Calendar cad = Calendar.getInstance();
cad.add(Calendar.MONTH, Integer.parseInt(month));
println new java.text.SimpleDateFormat(format).format(cad.getTime())
发现会报上面的异常,其实Grials中有toInteger()这个方法,他就像是toString()一样常见,将以上代码修改为:
cad.add(Calendar.MONTH, month.toInteger());
好,自此就没问题了。
但是在尝试的时候偶然发现了(int)month,有这种写法吗?答案是肯定的,但是这样转换后的值却是不完全正确,你会发现,转换后的值会比本身的值要多48,查找原因不难发现,ASC码48就是'0',也就是说'0'的值是48
所以,在Grails中真的需要转换int的时候,直接使用toInteger()方法即可。