我写了一段代码,我正在检查ArrayList的大小,如:
[1,2,3].size
一切都适用于Groovy控制台和Grails嵌入式Tomcat服务器。但是,一旦我将此代码部署到Websphere Application Server,我就会收到一个异常陈述
Exception evaluating property 'size' for java.util.ArrayList, Reason: groovy.lang.MissingPropertyException: No such property: size for class: java.lang.Integer.
经过一段时间的调试,测试和大量的WTF,我意识到方法调用中缺少括号。属性表示法不应该工作,因为Collection没有方法getSize()
(它是普通的size()
),这一切都有意义。
令我感到困惑的是,为什么someCollection.size
可以使用Groovy控制台和Grails?
Grails和Groovy Console版本是2.3.6
答案 0 :(得分:4)
ArrayList
持有private int size
,可供groovy访问。如果您的其他环境使用另一个JDK,则此var可能不存在,并且groovy将回退到[1,2,3]*.getSize()
的解释,然后失败。