2017-03-16 106 views
0

我道歉,如果我的問題不夠明確,構建在一個枚舉的實例,而無需修改枚舉類

我目前正在對一所學校assignement,我必須使用以下枚舉類:

public enum Seeds { 
TOMATE, 
CONCOMBRE, 
SALADE, 
PATATE, 
BETTERAVE; 
} 

然後爲每個種子的購買價格,出售價格和成熟時間製作一大堆常量,並且每次都必須鍵入它們,我想直接在類中爲每個枚舉分配屬性,如下所示:

public enum Seeds { 
TOMATE(2.00, 3.50, 5), 
CONCOMBRE(1.00, 2.50, 6), 
SALADE(1.50, 4.50, 8), 
PATATE(2.50, 3.50, 4), 
BETTERAVE(2.00, 4.00, 10); 

private final double 
       buy_price, 
       sell_price; 
private final int 
       maturation_time; 

public Seeds(double buy_price, sell_price, int maturation_time) { 
    this.buy_price = buy_price; 
    this.sell_price = sell_price; 
    this.maturation_time = maturation_time; 
}... 

並用getter返回它們的屬性。

然而,我的老師告訴我,我不能修改所提供的枚舉類...所以我在想,如果有可能構建種子另一個類。

回答

2

如果您不能修改種子枚舉,你可以創建一個POJO抱着你需要這樣的全部信息:

public class Seed { 
    private Seeds seedType; 
    private double buyPrice; 
    private double sellPrice; 
    private int maturationTime; 
    // constructor, getters and setters here 
} 

這將是更好的性能和構造函數添加到種子枚舉雖然。

+0

我重複了你的想法,這就是我最終做的'public class Magasin {private final final static int BUY = 0,SELL = 1,RIPE = 2; 私人最終靜態雙[] [] = MAGASIN {{2.00,3.50,5.0},// TOMATE \t {1.00,2.50,6.0}, \t {1.50,4.50,8.0}, \t {2.50,3.50, 4.0}, \t {2.00,4.00,10.0}, }; //干將...... }' – CaffeinatedSynapse

+0

我基本宣告一個STORE矩陣中的所有數據不變......我想嘗試肖恩的想法,但我一直在使用的接口沒有經驗,不能真正瞭解它們的功能在我自己的。 – CaffeinatedSynapse

+0

也可以。你也可以像這樣添加getter:'public double getBuyPrice(Seeds seedType){return MAGASIN [seedType.ordinal()] [BUY]; }' – Joe

0

您可以創建一個封裝了不同的價格類型的自定義類,並保持Map<Seed, YourCustomPricesClass>存儲關係。

請參見:the Map interface在Java教程

0

是的,它是可能的,但你正在侵蝕後面創建一個枚舉的主要意圖。如果您要創建一個類的可修改狀態,在技術上您正在創建一個新對象。如果是這樣的話,你甚至不需要在第一時間使用枚舉,只需堅持上課。