#目的
列挙型MonthのAPIを見る機会がありました。 >Month@Java8API
ところが「Monthの数値表現の取得にordinal()を使用しないでください。かわりにgetValue()を使用してください。」と書かれていました。
というわけで、確認してみようと思いました。
確認
##コード
MonthTest.java
import java.time.Month;
public class MonthTest {
public static void main(String[] args) {
MonthTest test = new MonthTest();
test.execute();
}
private void execute() {
Month[] months = Month.values();
System.out.println(String.format("%9s: %8s / %8s", "Name", "ordinal", "getValue"));
for(Month month : months) {
System.out.println(String.format("%9s: %8d / %8d", month, month.ordinal(), month.getValue()));
}
}
}
##出力結果
Name: ordinal / getValue
JANUARY: 0 / 1
FEBRUARY: 1 / 2
MARCH: 2 / 3
APRIL: 3 / 4
MAY: 4 / 5
JUNE: 5 / 6
JULY: 6 / 7
AUGUST: 7 / 8
SEPTEMBER: 8 / 9
OCTOBER: 9 / 10
NOVEMBER: 10 / 11
DECEMBER: 11 / 12
#まとめ
getValueは1から始まることが分かった。
昔は月は0始まりでインクリメントして使ってたけど、getValueを使えば意識をしないで使える。
年と日が1始まりなのに、月だけ0始まりだった違和感が解消されるかも。