Enum(列挙)小結


1.意味:
Enumはコンピュータのデータ型であり、列挙型である.変数の値を一定の範囲に限定し、例えば1年に四季がある.列挙タイプの定義に可能なすべての値を列挙すると、その列挙タイプの変数の値は定義の範囲を超えてはいけないことを示します.列挙タイプでは、基本データ型であり、構造タイプではなく、任意の基本タイプに分解することはできません.
列挙タイプでは一般に、列挙値は定数であり、変数ではなく、プログラムで付与文で付与することはできず、列挙値を列挙変数に付与するしかないと規定されている.列挙変数に数値を割り当てるには、強制タイプ変換を使用する必要があります.Java言語では、enumが現れる前にインタフェースを使用して列挙されるのが一般的であり、1つのenumオブジェクトに同じ属性または値が2つ以上あるはずがありません.
public interface Season{
    static winter = 1;
    static spring = 0;
}

enumを導入したJavaの列挙プログラミングは便利で、enum型のオブジェクトを1つだけ定義すると、enumオブジェクトの値は自動的に数値値を1つ獲得し、0から順次増加します.
public class EnumDemo{
    private enum Seasons{
        winter,spring,summer,fall
    }
    public static void main(String[] args){
        for(Seasons s:Seasons.values()){
            System.out.println(s);
        }
    }
}

winter,spring,summer,fallが順次出力されます
Javaでよく使われる列挙
定数:
列挙された値を直接定義できます
public enum Seasons{
    spring,summer,fall,winter
}

switch:
enum Seasons{
        spring,summer,fall,winter
}
public class ChooseSeason{
      Seasons season = Seasons.fall;
      public void change(){
          witch (season){
                case spring :
                    season = Seasons.spring;
                    break;
                case summer:
                    season = Seasons.summer;
                    break;
                case fall:
                    season = Seasons.fall;
                    break;
                case winter:
                    season = Seasons.winter;
                    break;
          }
     }
}

列挙に新しいメソッドを追加します.
独自のメソッドを定義する場合は、enumインスタンスシーケンスの最後にセミコロンを追加する必要があります.enumインスタンスは一番前に置く必要があります.
public enum Season{
        spring("  ",1),
        summer("  ",2),
        fall("  ",3),
        winter("  ",4);

        private String name;
        private int index;
        private Season(String name,int index){
            this.index = index;
            this.name = name;
        }
        //     
        public static String getName(int index){
            for(Season s :Season.values()){
                if(s.getIndex() == index){
                    return s.name;
                }
            }
            return null;
        }

        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getIndex() {
            return index;
        }
        public void setIndex(int index) {
            this.index = index;
        }

    }

実装インタフェース:
すべての列挙はJavaから継承されます.lang.enumクラス、Javaはマルチ継承をサポートしていないため、列挙オブジェクトは他のクラスを継承できません.
public interface Behaviour{
        void print();
        String getInfo();
    }
    
    public enum Season implements Behaviour{
        spring("  ",1),summer("  ",2),fall("  ",3),winter("  ",4);
        
        private String name;
        private int index;
        
        private Season(String name,int index){
            this.name = name;
            this.index = index;
        }
        
        public String getInfo(){
            return this.name;
        }
        
        public void print(){
            System.out.println(this.index+":"+this.name);
        }
    }

java.util.EnumSetとjava.util.EnumMapは2つの列挙集合である.EnumSetは、集合内の要素が重複しないことを保証し、EnumMapのkeyはenumタイプであり、valueは任意のタイプであってもよい.