開発者ドキュメント

Javaのenumの例

いくつかのJava enumの例と、それを使用する方法は何も特別なものではなく、自己参照用です。

1.基本列挙型

UserStatus.java

public enum UserStatus {
    PENDING,
    ACTIVE,
    INACTIVE,
    DELETED;
}

Test.java

public class Test {

    public static void main(String[]args) {

       //ACTIVE
        System.out.println(UserStatus.ACTIVE);

    }

}

2. Enum + Instanceフィールド

WhoisRIR.java

public enum WhoisRIR {
    ARIN("whois.arin.net"),
    RIPE("whois.ripe.net"),
    APNIC("whois.apnic.net"),
    AFRINIC("whois.afrinic.net"),
    LACNIC("whois.lacnic.net"),
    JPNIC("whois.nic.ad.jp"),
    KRNIC("whois.nic.or.kr"),
    CNNIC("ipwhois.cnnic.cn"),
    UNKNOWN("");

    private String url;

    WhoisRIR(String url) {
        this.url = url;
    }

    public String url() {
        return url;
    }
}

Test.java

public class Test {

    public static void main(String[]args) {

       //whois.arin.net
        System.out.println(WhoisRIR.ARIN.url());

    }

}

3. Enumメソッドあるロジック

Operation.java

public enum Operation {
    PLUS,
    MINUS,
    TIMES,
    DIVIDE;

    double calculate(double x, double y) {
        switch (this) {
            case PLUS:
                return x + y;
            case MINUS:
                return x - y;
            case TIMES:
                return x **  y;
            case DIVIDE:
                return x/y;
            default:
                throw new AssertionError("Unknown operations " + this);
        }
    }

}

Test.java

public class Test {

    public static void main(String[]args) {

        double result = Operation.PLUS.calculate(1, 2);
        System.out.println(result);//3.0

    }

}

4. Enumの使い方

4.1 Enumオブジェクトをループする。

public class Test {

    public static void main(String[]args) {

        for (UserStatus status : UserStatus.values()) {
            System.out.println(status);
        }

    }

}

出力

PENDING
ACTIVE
INACTIVE
DELETED

4.2 Enum値を比較するには、 `==`演算子を使用します。

public class Test {

    public static void main(String[]args) {

        WhoisRIR rir = WhoisRIR.APNIC;

        if(rir == WhoisRIR.APNIC) {
            System.out.println("This is APNIC : " + rir.url());
        }

    }

}

出力

This is APNIC : whois.apnic.net

4.3スイッチケース。

public class Test {

    public static void main(String[]args) {

        WhoisRIR rir = WhoisRIR.RIPE;

        switch (rir) {
            case ARIN:
                System.out.println("This is ARIN");
                break;
            case APNIC:
                System.out.println("This is APNIC");
                break;
            case RIPE:
                System.out.println("This is RIPE");
                break;
            default:
                throw new AssertionError("Unknown RIR " + rir);

        }

    }
}

出力

This is RIPE

4.2文字列をEnumオブジェクトに変換します。

public class Test {

    public static void main(String[]args) {

       //enum valueOf + uppercase
        Operation op = Operation.valueOf("times".toUpperCase());
        System.out.println(op.calculate(10, 3));

    }
}

出力

30.0

完了しました。

参考文献

: Comparing Java enum members: == or equals()]. link://java/java-convert-string-to-enum-object/[Java – Convert String

to Enumオブジェクト]。

Java – 列挙値を比較

モバイルバージョンを終了