kas*_*tti 5 collections groovy
我写了一段代码,在其中检查 ArrayList 的大小,例如:
[1,2,3].size
Run Code Online (Sandbox Code Playgroud)
所有这些都在 Groovy Console 和 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.
Run Code Online (Sandbox Code Playgroud)
经过一段时间的调试、测试和大量 WTF,我意识到方法调用中缺少括号。属性符号不应该工作,因为没有getSize()Collection方法(它是普通的size()),这一切都是有道理的。
令我困惑的是,为什么someCollection.size在 Groovy Console 和 Grails 上工作?
Grails 和 Groovy 控制台版本是 2.3.6
ArrayList(至少)Sun JDK 1.7u67 和OpenJDK 1.6中包含一个private int size,groovy 可以访问它。如果您的其他环境使用另一个 JDK,则该 var 可能不存在,并且 groovy 将回退到 的解释[1,2,3]*.getSize(),然后失败。
| 归档时间: |
|
| 查看次数: |
4753 次 |
| 最近记录: |