2017-03-16 107 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

是的,它是可能的,但你正在侵蚀后面创建一个枚举的主要意图。如果您要创建一个类的可修改状态,在技术上您正在创建一个新对象。如果是这样的话,你甚至不需要在第一时间使用枚举,只需坚持上课。