tl;dr
EnumSet.of( Month.JANUARY , Month.MARCH , Month.OCTOBER , Month.DECEMBER ).toString()
列挙型
あなたの言語が Java のように強力なenum機能を提供している場合は、多数のオブジェクトを定義してください。Oracle チュートリアルを参照してください。
java.time.Month
java.timeクラスには便利なenum が含まれておりMonth
、1 月から 12 月までの各月に 1 つずつ、12 個のオブジェクトを定義しています。
それらには 1 ~ 12 の番号が付けられ、1 月から 12 月までの適切な順序で定義されます。
コード ベースでは、この列挙型のオブジェクトを使用して、単なる整数の使用または月名文字列の使用を置き換えます。全体でオブジェクトを使用Month
すると、タイプ セーフが提供され、有効な値が保証され、コードがより自己文書化されます。
Java では、EnumSet
とは列挙値用に最適化されたとEnumMap
の実装です。それらは非常に高速に実行され、ほとんどメモリを消費しません。Set
Map
EnumSet<Month> months = EnumSet.of( Month.JANUARY , Month.MARCH , Month.OCTOBER , Month.DECEMBER );
はEnumSet
、列挙型定数が宣言された順序である自然な順序で反復します。したがって、コレクションを明示的にソートする必要はありません。
このクラスにはgetDisplayName
、月の名前のローカライズされた文字列を生成するメソッドが含まれています。テキストの長さまたは省略形を指定TextStyle
します。そしてLocale
、(a) 翻訳で使用する人間の言語、および (b) 省略形、句読点、大文字化などの問題を決定するための文化的規範の を指定します。
for( Month month : months ) {
String output = month.getDisplayName( TextStyle.SHORT_STANDALONE , Locale.CANADA_FRENCH ); // Or Locale.US, Locale.ITALY, etc.
System.out.println( output );
}