有 Java 编程相关的问题?

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

java Enum或int表示支付频率

所以我有以下课程

public abstract class Insurance {
    private int yearlyPremium;
    ...
}

我想要一个字段,它表示一个人必须支付保险费的频率,可以是enum,也可以是int

以下是我对enum的想法:

public enum PaymentFrequency {
    MONTHLY("Monthly", 12),
    QUARTERLY("Quarterly", 4),
    SEMIANNUALLY("Semiannually", 2),
    ANNUALLY("Annually", 1);

    private String name;
    private int paymentsPerYear;

    PaymentFrequency(String name, int paymentsPerYear) {
        this.name = name;
        this.paymentsPerYear = paymentsPerYear;
    }

    public String getName() {
        return name;
    }

    public int getPaymentsPerYear() {
        return paymentsPerYear;
    }
}

enum的另一个优点是,我可以使用它的values(静态)和getName方法为用户界面生成下拉菜单,这样,如果我添加一个新的PaymentFrequency,我就不必再更改下拉菜单了

这是enum的工作,还是我在这里过于复杂?这个字段可以用一个简单的int表示,但缺点是我必须检查它是否是一个有效的数字,因为我只需要1到12之间的值(包括1和12),这样12 % n == 0


共 (1) 个答案

  1. # 1 楼答案

    坏代码的标志之一是神奇的数字。出现在代码中但未记录的数字为什么会出现(为什么是12而不是11?)

    枚举几乎总是超出您的需要,但它们几乎总是正确的选择。如果您需要向这个类添加功能,那么很容易做到这一点。创建一个方法public Date getNextPaymentDate(Date lastPaymentDate)真的很容易

    拥有一个易于扩展的类可以使代码更易于维护