zoukankan      html  css  js  c++  java
  • 枚举(Enum)

    enum是一个全新的“类”。

    枚举(Enum): 我们所定义的每个枚举类型都继承自java.lang.Enum类。枚举中的每个成员都是public static final的。

    当您使用“enum”定义枚举类型时,实质上您定义出来的类型继承自java.lang.Enum类型,而每个枚举的成员其实就是您定义的枚举类型的一个实例(Instance),他们都被预设为final,所有您无法改变他们,他们也是static成员,所以您可以通过类型名称直接使用他们,当然最重要的,他们都是公开的(public)

    换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间已经完全确定下来了。

    1、定义一个枚举

    public enum Color {
    	Red,White,Blue
    }
    

      使用枚举

    public class ColorTest {
    	public static void main(String[] args) {
    		Color myColor = Color.White;
    		System.out.println(myColor);
    	}
    }
    

      

    2、定义一个有成员变量的枚举

    public class EnumTest {
    	public static void doOp(OpConstant opConstant){
    		switch (opConstant) {
    		case TRUN_LEFT:
    			System.out.println("向左转");
    			break;
    		case TRUN_RIGHT:
    			System.out.println("向右转");
    			break;
    		case SHOOT:
    			System.out.println("射击");
    			break;
    		}
    	}
    	
    	public static void main(String[] args) {
    		doOp(OpConstant.SHOOT);
    	}
    }
    
    enum OpConstant{
    	TRUN_LEFT, TRUN_RIGHT, SHOOT
    }
    

      

    定义枚举类型时本质上就是定义一个类别,只不过很多细节编译器帮您完成了。所有在某些程度上,enum关键字的作用就像是class或interface。

    3、EnumSet的使用

    enum AddressConst{
    	BEIJING,
    	SHANGHAI,
    	HANGZHOU
    }
    
    public class EnumSetDemo {
    	
    	public static void showEnumSet(EnumSet<AddressConst> enumSet){
    		for(Iterator<AddressConst> iter = enumSet.iterator(); iter.hasNext();){
    			System.out.println(iter.next());
    		}
    	}
    	
    	public static void main(String[] args) {
    		EnumSet<AddressConst> enumSet = EnumSet.of(AddressConst.BEIJING, AddressConst.SHANGHAI);
    		showEnumSet(enumSet);
    		System.out.println("-------");
    		//出去enumSet的enum实例
    		showEnumSet(EnumSet.complementOf(enumSet));
    	}
    }
    

       EnumSet.noneOf 方法的使用

    public class EnumSetDemo2 {
    	
    	public static void showEnumSet(EnumSet<AddressConst> enumSet){
    		for(Iterator<AddressConst> iter = enumSet.iterator(); iter.hasNext();){
    			System.out.println(iter.next());
    		}
    	}
    	
    	public static void main(String[] args) {
    		EnumSet<AddressConst> enumSet = EnumSet.noneOf(AddressConst.class);
    		enumSet.add(AddressConst.BEIJING);
    		enumSet.add(AddressConst.HANGZHOU);
    		showEnumSet(enumSet);
    	}
    }
    

      

    4.EnumMap使用

    public class EnumMapDemo {
    	
    	public static void main(String[] args) {
    		 Map<Action, String> map = new EnumMap<Action, String>(Action.class);
    		 map.put(Action.PASUE, "暂停");
    		 map.put(Action.STOP, "停止");
    		 map.put(Action.START, "开始");
    		 
    		 for(Action action : Action.values()){
    			 System.out.println(map.get(action));
    		 }
    	}
    }
    

      

  • 相关阅读:
    check2
    LYF模板连接.txt
    mvc中的表现和数据分离怎么理解?
    node中websocket的使用
    vue随笔
    python安装Django常见错误
    node中的session的使用
    为什么很多IT公司不喜欢进过培训机构的人呢
    vue数据交互
    vuecli的服务代理
  • 原文地址:https://www.cnblogs.com/linlf03/p/10908207.html
Copyright © 2011-2022 走看看