2012-11-29 53 views
1

我必須爲項目編寫驗收測試。在這個項目中有一個公開的最終枚舉,其中包含另一個帶有方法的枚舉。我應該在運行時添加新的值,但我不知道如何實現這個結果。我使用的語言是Java。將字段添加到枚舉

你能幫我嗎?

+0

爲什麼你需要添加值一個枚舉爲了寫一個驗收測試? – henry

+0

因爲我必須從FIT表中加載新值,並且這些值由enum類型表示到系統中 –

+0

枚舉的目的是提供一組靜態約束的值 - 如果您的要求是針對一組開放式結束的值可以動態讀取的不使用枚舉。你唯一的選擇是改變代碼來返回從你的表中的數據構造的類的實例,或靜態地添加新的字段到枚舉。 – henry

回答

1

您不能在Java中的Enum中動態創建條目。我建議使用地圖做這樣的事情,但它不會是一個枚舉。

+0

我無法更改代碼!我必須返回一個枚舉類型 –

+0

聽起來像你在這裏做XY反模式。你真的想達到什麼目的? –

+0

我正在嘗試這樣做:http://www.javaspecialists.eu/archive/Issue161.html但更一般。我沒有任何開關。 –

0

讓你的枚舉實現一個接口,該接口聲明getter方法訪問你想要擴展的枚舉的字段。在客戶端代碼中,將所有使用枚舉的方法更改爲接口。通過這種設計,您可以輕鬆地爲測試添加新值。

0

爲什麼不創建一個列表(E.G. LinkedList等)並使用enum 的values()方法將初始值(枚舉的值)獲取到列表中。然後,您可以在運行時將新值添加到列表中,例如:

要迭代枚舉值,只需使用values();例如假定公共枚舉月{...}的正確聲明:

1. for (Month month : Month.values()) { 
2. //do something 
3. } 

這與使用值()與枚舉信息的URL:

http://www.coderanch.com/t/410234/java/java/Iteration-Enum