以下の内容はhttps://unageanu.hatenablog.com/entry/20090113/1231843821より取得しました。


Enumって順番があるのか。

Enumには定義順に連番が振られていてEnumSet#rangeを使って開始位置、終了位置を指定してその範囲のEnumを取り出すことができたりします。

// テスト用の列挙型
enum Test {
    A, B, C, D, E, F, G, H
}

public static void main( String[] args ) {
    
    // 列挙型「Test」の C から G を取得。
    System.out.println( "\n--- C から G" );
    EnumSet<Test> range = EnumSet.range( Test.C, Test.G );
    for ( Test t : range ) {
        System.out.println( t );
    }
    // 列挙型「Test」の C から C を取得。開始位置/終了位置とも一覧に含まれる。
    System.out.println( "\n--- C から C" );
    range = EnumSet.range( Test.C, Test.C );
    for ( Test t : range ) {
        System.out.println( t );
    }
    
    // 範囲が不正 → IllegalArgumentExceptionになる。
    System.out.println( "\n--- C から A" );
    range = EnumSet.range( Test.C, Test.A );
    for ( Test t : range ) {
        System.out.println( t );
    }
}

実行結果です。

--- C から G
C
D
E
F
G

--- C から C
C

--- C から A
Exception in thread "main" java.lang.IllegalArgumentException: C > A
 ... 

よく見ると「Enum#ordinal()」とかあるな。




以上の内容はhttps://unageanu.hatenablog.com/entry/20090113/1231843821より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14