为什么我的Groovy对象初始化程序无法设置属性?

时间:2012-08-10 01:41:36

标签: 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)

但是,这不会修改此人的状态,并且仍为ACTIVE。我必须明确声明:

person.status = StatusEnum.INACTIVE

正确设置状态。有谁知道为什么我必须明确设置它?

1 个答案:

答案 0 :(得分:2)

我猜这与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