я написал кусок кода, где я проверяю размер в ArrayList, как:Groovy имеет свою недвижимость для коллекционирования?
[1,2,3].size
Все хорошо работает на Groovy консоли и с Grails встроенного Tomcat сервером. Но как только я разворачивал этот код на WebSphere Application Server, я receivec исключение с указанием
Exception evaluating property 'size' for java.util.ArrayList, Reason: groovy.lang.MissingPropertyException: No such property: size for class: java.lang.Integer.
Через некоторое время отладки, тестирования и много WTFs, я понял, что там были круглые скобки отсутствуют в вызове метода. Обозначение свойства не должно работать, поскольку нет метода getSize()
для коллекции (это просто size()
), и все это имеет смысл.
Что меня озадачивает Почему someCollection.size
работает на Groovy Console и Grails?
Grails и Groovy Console версии 2.3.6
Существуют ли варианты отличительных черт? – Opal
'ArrayList' имеет частный var' размер' (по крайней мере, на солнце jdk 1.7u67). Я ожидал бы разных JDK. – cfrick
Рамка Grails входит в состав приложения, так что это то же самое для обоих. Различные JDK - очень хороший кандидат. У Websphere, вероятно, есть своя реализация. – kaskelotti