В Groovy вы всегда должны предоставлять класс создаваемого объекта, поэтому в Groovy нет эквивалента объектно-литеральному синтаксису JavaScript.
Однако Groovy имеет буквальный синтаксис для Map
, который концептуально очень похож на объект JavaScript, то есть оба являются набором свойств или пар имя-значение.
Эквивалентный Groovy-код для JavaScript выше:
def obj = [a: '1']
println obj.a
Evenхотя имя класса здесь не используется, вы все равно создаете объект определенного класса (java.util.LinkedHashMap
).Приведенный выше код является просто сокращением для:
def obj = new LinkedHashMap();
obj.a = '1'
println obj.a
Expando
класс , возможно, даже больше похож на объект JavaScript и полезен, когда вы хотите избежать «накладных расходов»определения класса или динамического объекта, к которому можно добавить любое произвольное свойство во время выполнения.