Java 避免多次声明

Java 避免多次声明,java,enums,Java,Enums,我正在写一门课程,它取决于月份以及每个月有多少天。在我的课程开始时,我写了: static final int JAN = 1; static final int FEB = 2; ... static final int DEC = 12; 这样做看起来很麻烦,我觉得枚举会更有效。我需要能够“增加”这个月(其中十二月+1=一月),并且需要能够知道这个月有多少天(二月有28天) 我认为有两种方法可以做到这一点: 我目前的方法是,定义静态final int并使用switch语句

我正在写一门课程,它取决于月份以及每个月有多少天。在我的课程开始时,我写了:

static final int    JAN = 1;
static final int    FEB = 2;
...
static final int    DEC = 12;
这样做看起来很麻烦,我觉得枚举会更有效。我需要能够“增加”这个月(其中十二月+1=一月),并且需要能够知道这个月有多少天(二月有28天)

我认为有两种方法可以做到这一点:

  • 我目前的方法是,定义静态final int并使用switch语句查找天数,当递增时,我总是检查该值是否大于12

  • 创建一组枚举,每个枚举包含一年中的哪个月以及包含多少天的输入,并定义一个“增量”方法


  • 有没有更好的方法来做到这一点,或者(大概)是2。最好的方法是什么?

    我建议在这种情况下使用java.util.Calendar。它已经为您必须使用的几乎所有与日期和时间相关的概念定义了常量;另外,它还可以很聪明地了解二月的柔软长度(29天,25%的时间)。

    Java有一个类可以满足您的需要。请参阅
    日历
    类,该类还包含月份和星期几的常量:


    不要。别那么做。请使用内置类进行日期时间处理。除非你想伤害自己,看看新的Java时间API。不要阅读指向旧Calendar类的答案……这两个类有什么特别的优点/缺点,或者它们在功能上有什么不同?Calendar使用起来很笨拙,被Java时间取代,Java时间从Java 8开始,使用起来容易得多。