Grails 为什么Groovy对象初始值设定项无法设置属性?

Grails 为什么Groovy对象初始值设定项无法设置属性?,grails,groovy,grails-2.0,Grails,Groovy,Grails 2.0,我有这样一个Groovy类: class Person { String firstName String lastName Status status = StatusEnum.ACTIVE } 我正在用一个对象初始值设定项创建它的一个实例: def person = new Person( firstName: "Bob", lastName: "Yelo", status: StatusEnum.INACTIVE) 但是,这不会修改此人的状态,并且仍保

我有这样一个Groovy类:

class Person {

    String firstName
    String lastName
    Status status = StatusEnum.ACTIVE
}
我正在用一个对象初始值设定项创建它的一个实例:

def person = new Person(
    firstName: "Bob", lastName: "Yelo", status: StatusEnum.INACTIVE)
但是,这不会修改此人的状态,并且仍保持为活动状态。我必须明确声明:

person.status = StatusEnum.INACTIVE

它正确地设置了状态。有人知道我为什么要显式设置它吗?

我猜这与字段的类型是
Status
而不是
StatusEnum
有关

像这样声明它是有效的,正如您建议它应该使用groovy控制台:

enum StatusEnum {
    ACTIVE, INACTIVE
}

class Person {
    String firstName
    String lastName
    StatusEnum status = StatusEnum.ACTIVE
}

def person = new Person(firstName: "Bob", lastName: "Yelo", status: StatusEnum.INACTIVE)

assert StatusEnum.INACTIVE == person.status