2012-08-07 29 views
0

我在Grails項目中有一個位於src/java中的枚舉文件。在Grails中動態改變src/java文件中的枚舉值

此枚舉具有在代碼上定義的值,我可以動態更改此值嗎?

public enum Status 
{ 
    value_one, value_two, value_three; 

    public String getOtherString() 
    { 
     switch (this) 
     { 
     case value_one: 
      return "value one"; 
     case value_two: 
      return "value two"; 
     case value_three: 
      return "value three"; 
     default: 
      return "problem"; 
     } 
    } 

    @Override 
    public String toString() 
    { 
     switch (this) 
     { 
     case value_one: 
      return "VALUE 1"; 
     case value_two: 
      return "VALUE 2"; 
     case value_three: 
      return "VALUE 3"; 
     default: 
      return "problem happens"; 
     } 
    } 
} 
+0

你究竟想要改變什麼?添加/刪除一個新的枚舉?更改枚舉名稱?改變toString()的響應?改變getOtherString()的響應? – 2012-08-07 13:27:25

+0

我要改變字符串的響應與數據庫的東西,像這樣: '情況value_one: 回報MyDomain.getValueOne();' 這樣,我有一個名爲MYDOMAIN域其中有一些atributes是可以改變的在數據庫上。 – 2012-08-07 13:30:54

回答

0

我找到了一種使用服務的方法。

我轉換.groovy文件中的枚舉並使用服務方法返回值。

所有作品!

2

您可以在使用前使用metaClass進行擴展。例如加入到BootStrap.init()

Status.metaClass.getValueOne = { 
    Status val = delegate 
    switch (val) { 
     case Status.value_one: 
     // read from database 
    } 
}