2012-08-10 100 views
0

我有一個Groovy類,像這樣:爲什麼我的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 

正確設置狀態。有誰知道爲什麼我必須明確地設置它?

回答

2

我猜這是與Status而不是StatusEnum的字段類型有關?

聲明像這樣的工作你所建議的,應該常規控制檯:

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 
相關問題