java-Enum枚举

1、用enum代替int常量
枚举类型是指一组固定的常量组成合法值的类型。

怎么定义?

public enum Apple{FUJI,PIPPIN,GRANNY_SMITH}
public enum Orange{NAVEL,TEMPLE,BLOOD}

它们就是通过公有的静态final域为每个枚举常量导出实例的类。
使用构造器描述枚举类型

public enum Planet{
      MERCURY(3,5),
      MARS(4,6),
      EARTH(5,7);
      private final double mass;
      private final double radius;
      private final double surface;
      Planet(double mass,double radius){
              this.mass=mass;
              this.radius=radius;
              surface=G*mass/(radius*radius);
      }
}
public class Test{
      public static void main(String arg0){
              for(Planet:Planet.values()){
                    System.out.println(p);//返回MERCURY  ,MARS ,EARTH
            }
      }
}

注意Planet就像所有的枚举一样,它有一个静态的values方法,按照声明顺序返回它的值数组。

  • values()
    静态方法,返回一个包含全部枚举值的数组
Colors[] colors=Colors.values();
for(Color c:colors){
          System.out.println(c+",");
 }
  • toString()返回枚举常量的名称
Colors c=Color.RED;
System.out.println(c);//返回结果:RED

Switch

enum Signal{
      GREEN,YELLOW,RED
}
public class TrassicLight{
      Signal color=Signal.RED;
      public void change(){
                switch(color){
                      case RED:
                          color=Signal.GREEN;
                          break;
                      case YELLOW:
                          color=Signal.RED;
                          break;
                      case GREEN:
                          color=Signal.YELLOW;
                          break;
              }
      }
}

向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例系列中的最后添加一个分号。

public enum Color{
        RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLOW("黄色",4);
        //成员变量
        private String name;
        private int index;
       //构造方法
      private Color(String name,int index){
            this.name=name;
            this.index=index;  
      }
      //普通方法
      pubilc static String getName(int index){
                for(Color c:Color.values()){
                          if(c.getIndex()==index){
                                  return c.name;
                          }
                }
      }
      //get set方法
      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;
       }
}

覆盖枚举方法

public class Test{
        public enum Color{
                RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLO("黄色",4);
                //成员方法
                private String name;
                private int index;
                
                //构造方法
                private Color(String name,int index){
                          this.name=name;
                          this.index=index;
                }
                @Override
                public String toString(){
                        return this.index+"_"+this.name;
                }
         }
         public static void main(String[] args){
                  System.out.println(Color.RED.toString());  
        }
 }

实现接口

public interface Behaviour{
            void print();  
            String getInfo();      
    }
    public enum Color implements Behaviour{
            RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLO("黄色",4);
            //成员变量
            private String name;
            private int index;
            //构造方法
            private Color(String name,int index){
                  this.name=name;
                  this.index=index;
            }
            public String getInfo(){
                    return this.name;
            }
            public void print(){
                      System.out.print(this.index+":"+this.name);
             }
    }
        
    

使用接口组织枚举

public interface Food{
     enum Coffee implements Food{
             BLANK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
     }
    enum Dessert implements Food{
             FRUIT,CAKE,CELATO
     }
}

你可能感兴趣的:(java-Enum枚举)