白旗仙javaリアルタイム学習11:列挙型

8643 ワード

enum
  • 列挙型
  • C言語にもある(動作が少し違う)
  • 相関定数を束ねる
  • type-safe
  • class Chess {
    	enum Color {WHITE, BLACK}
    }
    Enum定義、宣言、使用法
    定義#テイギ#
    Enum Enum名称{定数1,定数2,...}
    enum Color {WHITE, BLACK, NONE}
    使用
    Color color = Color.WHITE;
    if (color == Color.BLACK) {
    //...
    }
    クラス内のenum宣言
  • 一般クラスとは異なり、公用として発表できる
  • 使用すると、enumに相当する値が必要な場合が多く、使用する場合は以下のようになります.
  • enumの作成者はprivateですのでご注意ください
  • public class Chess {
        public enum Color {
            WHITE("white"), BLACK("black");
    
            private String value;
    
            Color(String color) {
                this.value = color;
            }
    
            public String getValue() {
                return this.value;
            }
        }
    
        private Color color;
    
        public Chess(Color color) {
            this.color = color;
            System.out.println(color.getValue());
        }
    }
    Enumが提供する方法
    java.lang.Enum
  • https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html
  • すべての列挙型の祖先
  • Enum method
    Class<E> getDeclaringClass()
    String name()
    int ordinal() 
    T valueOf(Class<T> enumtype, String name)
    valueOf
  • 名義でenumを入手できます.
  • 適切に使用
  •     public static void main(String[] args) {
            Color w = Color.valueOf("WHITE");
            System.out.println(w.getValue());
        }
    結果:ホワイト
    values
  • このenumタイプの全体配列が得られる.
  • 同じく非常に役に立つ
  • Color[] colors = Color.values() //전체가 다 들어옴
    ordinal()
  • カイドウエンム順出現.
  • private Color[] colors = Color.values()
    public Color next() {
    	return color[(this.ordinal()  + 1) % colors.length];
    }
  • Color.WHITE.next()といえばBLACKが出てきます.
  • EnumSet
  • https://www.baeldung.com/java-enumset活用法あり.
  • 「SetとしてEnumを使いたいならEnumSetがいい」そう言えばまだ使ったことがない.文章出版後にハート型の文章を読んで今日の放送で勉強してから追加整理しましょう