列挙(Enum)メモ

4590 ワード

最近1つのSSMプロジェクトをして、中で列挙を使って、いくつか列挙についての文章を見て、ここで記録します.
1.列挙というキーワードはjava SE 5に導入するものであり、その前に列挙を用いるのは面倒である.2.列挙と定数が似ていることを知っていますが、定数と比較すると、この方法の優位性はどこにありますか.2.1まず列挙はクラスであり、使用時にコンパイル時にチェックを行い、エラーを避けることができる.2.2予め記録する値は、無効な値を受けることを避けるために受け入れることができる.
public enum PizzaStatus {
    ORDERED,
    READY, 
    DELIVERED; 
}

2.3必要な定数値を列挙クラスに配置しました(プロジェクトで定数とグローバル異常を格納するためにパッケージcommonを定義することがよくあります).では、これらの定数をどのように使用しますか?
Javaの各列挙はjavaから継承されます.lang.Enumクラス.列挙タイプを定義する場合、各列挙タイプメンバーはEnumクラスのインスタンスと見なすことができます.これらの列挙メンバーはデフォルトでfinal、public、staticによって修飾され、列挙タイプメンバーを使用する場合、直接列挙名を使用してメンバーを呼び出すことができます.
     .                   
PizzaStatus.ORDRED
PizzaStatus.READY
PizzaStatus.DELIVERED

3.私たちはよく列挙をどのように使いますか.
3.1.プロジェクトでよく使用されるカスタム列挙方法:列挙で属性を定義したり、構造関数を定義したりすることができます.
public enum ResponseCode {

    SUCCESS(0, "SUCCESS"),
    ERROR(1, "ERROR"),
    NEED_LOGIN(10, "NEED_LOGIN"),
    ILLEGAL_ARGUMENT(2, "ILLEGAL_ARGUMENT");

    private final int code;
    private final String desc;


    ResponseCode(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public int getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

}


3.2列挙は往々にしてswitch文と組み合わせて使用する.
4.EnumSet and EnumMap
この2つのクラスについては、まだ研究していません.必要な友达は次のリンクを見てもいいです.EnumSet and EnumMapポイントについてはこちら
列挙については先にこんなに多く言って、今彼に対する理解はまだ表面と存在して、後で新しい理解があって引き続き更新します.