Constructor 'Foo' cannot be applied to '()'
Это происходит потому, что все поля в вашем классе являются окончательными, поэтому вы должны инициировать эти поля во время инициализации объекта.
Таким образом, единственный способ создать объект этого класса - это использовать всеКонструктор args:
new Foo(true, false, true)
Из-за того, что Groovy обрабатывает то, что выглядит как именованные аргументы (Groovy не поддерживает именованные аргументы - он передает карту), это также приведет к ошибке с аналогичнымиОтличный код.Groovy обрабатывает проходящую здесь карту, разворачивая карту в вызовы сеттера (а их нет, потому что атрибуты являются окончательными).
@groovy.transform.TupleConstructor
class Foo {
final boolean bar
final boolean baz
final boolean boo
}
new Foo(bar: true, baz: false, boo: true)
Сбой с
Caught: groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: bar for class: Foo
groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: bar for class: Foo
at x.run(x.groovy:8)