有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在枚举中构造实例而不修改枚举类

如果我的问题不够清楚,我道歉

我目前正在进行一项学校作业,我必须使用以下枚举类:

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返回它们的属性

但是,我的老师告诉我,我不能修改提供的枚举类。。。所以我想知道是否有可能在另一个类中构造种子


共 (3) 个答案

  1. # 1 楼答案

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

    See: the Map interface in the Java Tutorial

  2. # 2 楼答案

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

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

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

  3. # 3 楼答案

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