在不修改Enum类的情况下构造Enum中的实例

时间:2017-03-16 17:32:23

标签: java enums

如果我的问题不明确,我道歉,

我目前在学校设计工作,我必须使用以下Enum课程:

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返回其属性。

然而,我的老师告诉我,我不能修改提供的Enum类...所以我想知道是否有可能在另一个班级构建种子。

3 个答案:

答案 0 :(得分:2)

如果您无法修改种子枚举,您可以创建一个POJO来保存您需要的所有信息,如下所示:

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

最好将属性和构造函数添加到Seeds枚举中。

答案 1 :(得分:0)

您可以创建一个封装不同价格类型的自定义类,并保留Map<Seed, YourCustomPricesClass>来存储关系。

  

请参阅Java Tutorial中的the Map interface

答案 2 :(得分:0)

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