zoukankan      html  css  js  c++  java
  • 枚举类型Enum

    包java.dataStructure中,文件名Enum_demo.java

    在JDK5中引入了一个新的关键字——enum,可以直接定义枚举类型

    在申明枚举类的时候,也可以申明属性、方法和构造函数,但枚举类的构造函数必须为私有的,不然就能new出枚举类

    取出一个枚举内容

    //=================================================
    // File Name       :	Enum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum Color{
    	RED,GREEN,BLUE;
    }
    
    //主类
    //Function        : 	Enum_demo;
    public class Enum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		Color c = Color.BLUE;
    		System.out.println(c);
    	}
    
    }
    

    枚举类型的数据也可以使用“枚举.values()”的形式,将全部的枚举类型变为对喜爱数组的形式,之后再直接使用foreach进行输出

    //=================================================
    // File Name       :	Enum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum Color{
    	RED,GREEN,BLUE;
    }
    
    //主类
    //Function        : 	Enum_demo;
    public class Enum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		for(Color c:Color.values()){
    			System.out.println(c);
    		}
    	}
    
    }
    

    使用switch进行判断

    //=================================================
    // File Name       :	Enum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum Color{
    	RED,GREEN,BLUE;
    }
    
    //主类
    //Function        : 	Enum_demo;
    public class Enum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		for(Color c:Color.values()){
    			print(c);
    		}
    	}
    	
    	public static void print(Color color){
    		switch(color){
    			case RED:{
    				System.out.println("红色");
    				break;
    			}
    			case GREEN:{
    				System.out.println("绿色");
    				break;
    			}
    			case BLUE:{
    				System.out.println("蓝色");
    				break;
    			}
    			default:{
    				System.out.println("其他颜色");
    				break;
    			}
    		}
    	}
    
    }
    

    使用name()和ordinal()方法取得名称和编号

    //=================================================
    // File Name       :	Enum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum Color{
    	RED,GREEN,BLUE;
    }
    
    //主类
    //Function        : 	Enum_demo;
    public class Enum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		for(Color c:Color.values()){
    			System.out.println(c.ordinal()+"-->"+c.name());
    		}
    	}
    
    }
    

    通过构造方法为属性赋值

    通过把构造方法私有,使得不能new 一个新的Color对象,只能使用RED("红色"),GREEN("绿色"),BLUE("蓝色")三个类型

    //=================================================
    // File Name       :	Enum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum Color{
    	RED("红色"),GREEN("绿色"),BLUE("蓝色");		//定义枚举的3个类型,“红色”对应String name
    	
    	private Color(String name){			//定义私有构造方法
    		this.setName(name);
    	}
    	
    	private String name;
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    }
    
    //主类
    //Function        : 	Enum_demo;
    public class Enum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		for(Color c:Color.values()){
    			System.out.println(c.ordinal()+"-->"+c.name()+c.getName());
    		}
    	}
    
    }
    

    通过setter()方法为属性赋值

    枚举比较器

    import java.util.Iterator;
    import java.util.Set;
    import java.util.TreeSet;
    
    //=================================================
    // File Name       :	Enum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum Color{
    	RED("红色"),GREEN("绿色"),BLUE("蓝色");		//定义枚举的3个类型
    	
    	private Color(String name){			//定义构造方法
    		this.setName(name);
    	}
    	
    	private String name;
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    	
    }
    
    //主类
    //Function        : 	Enum_demo;
    public class Enum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		
    		Set<Color> t = new TreeSet<Color>();
    		t.add(Color.BLUE);
    		t.add(Color.GREEN);
    		t.add(Color.RED);
    		Iterator<Color> iter = t.iterator();
    		while(iter.hasNext()){
    			System.out.println(iter.next()+"、");
    		}
    	}
    
    
    }
    

    EnumMap

    EnumMap是Map接口的子类,所以本身还是以Map的形式进行操作,即Key--Value,

    如果要使用EnumMap,则首先要创建EnumMap的对象,在创建对象的时候必须指定要操作的枚举类型

    import java.util.EnumMap;
    import java.util.Map;
    
    //=================================================
    // File Name       :	Enum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum color{
    	RED,GREEN,BLUE;		//定义枚举的3个类型
    }	
    
    
    //主类
    //Function        : 	Enum_demo;
    public class EnumMap_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		Map<Color,String> desc = null;									//定义一个Map对象
    		desc = new EnumMap<Color,String>(Color.class);	//实例化EnumMap
    		desc.put(Color.BLUE, "蓝色");
    		desc.put(Color.RED, "红色");
    		desc.put(Color.GREEN,"绿色");
    		
    		for(Color c:Color.values()){				//取得全部的枚举
    			System.out.println(c.name()+"-->"+c.getName());
    		}
    		
    		for(Color c:desc.keySet()){				//取得全部的Key
    			System.out.println(c.name()+"、");
    		}
    		
    		for(String c:desc.values()){				//取得全部的值
    			System.out.println(c+"、");
    		}
    	}
    
    }
    

    EnumSet

    EnumSet是Set接口的子类,所以里面的内容是无法重复的。

    使用EnumSet时不能直接使用关键字new为其进行实例化,所以在此类中提供了很多的静态方法

    EnumSet---将全部的集合设置到EnumSet集合中

    import java.util.EnumSet;
    
    //=================================================
    // File Name       :	EnumSet_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum color_{
    	RED,GREEN,BLUE;		//定义枚举的3个类型
    }	
    
    
    //主类
    //Function        : 	EnumSet_demo;
    public class EnumSet_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		EnumSet<Color> es = null;				//声明一个EnumSet对象
    		es = EnumSet.allOf(Color.class);		//将枚举的全部类型设置到EnumSet对象中
    		
    		print(es);
    	}
    	
    	public static void print(EnumSet<Color> temp){		//专门的输出操作
    		for(Color c:temp){															//循环输出EnumSet中的内容
    			System.out.println(c+"、");
    		}
    	}
    
    }
    

    只设置一个枚举的类型到集合中

    使用EnumSet提供的static方法of(),将一个枚举中的一个内容设置到EnumSet集合中

    import java.util.EnumSet;
    
    //=================================================
    // File Name       :	EnumSet_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum color_{
    	RED,GREEN,BLUE;		//定义枚举的3个类型
    }	
    
    
    //主类
    //Function        : 	EnumSet_demo;
    public class EnumSet_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		EnumSet<Color> es = null;				//声明一个EnumSet对象
    		es = EnumSet.of(Color.BLUE);			//设置一个枚举的内容
    		
    		print(es);
    	}
    	
    	public static void print(EnumSet<Color> temp){		//专门的输出操作
    		for(Color c:temp){															//循环输出EnumSet中的内容
    			System.out.println(c+"、");
    		}
    	}
    
    }
    

    创建只能放入指定枚举类型的集合

    使用EnumSet提供的static方法noneOf(),将集合设置成只能增加Color类型的集合,但是并不设置任何的内容到集合中

    import java.util.EnumSet;
    
    //=================================================
    // File Name       :	EnumSet_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum color_{
    	RED,GREEN,BLUE;		//定义枚举的3个类型
    }	
    
    
    //主类
    //Function        : 	EnumSet_demo;
    public class EnumSet_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		EnumSet<Color> es = null;				//声明一个EnumSet对象
    		
    		es = EnumSet.noneOf(Color.class);			//创建一个可以加入Color类型的对象
    		es.add(Color.BLUE);
    		es.add(Color.RED);
    		
    		print(es);
    	}
    	
    	public static void print(EnumSet<Color> temp){		//专门的输出操作
    		for(Color c:temp){															//循环输出EnumSet中的内容
    			System.out.println(c+"、");
    		}
    	}
    
    }
    

    创建不包含指定元素的集合

    import java.util.EnumSet;
    
    //=================================================
    // File Name       :	EnumSet_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum color_{
    	RED,GREEN,BLUE;		//定义枚举的3个类型
    }	
    
    
    //主类
    //Function        : 	EnumSet_demo;
    public class EnumSet_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		
    		EnumSet<Color> esOld = null;				//声明一个EnumSet对象
    		EnumSet<Color> esNew = null;				//声明一个EnumSet对象
    		esOld = EnumSet.noneOf(Color.class);			//创建一个可以加入Color类型的对象
    		esOld.add(Color.BLUE);
    		esOld.add(Color.RED);
    		esNew = EnumSet.complementOf(esOld);		//创建一个不包含指定元素的集合
    		print(esNew);
    	}
    	
    	public static void print(EnumSet<Color> temp){		//专门的输出操作
    		for(Color c:temp){															//循环输出EnumSet中的内容
    			System.out.println(c+"、");
    		}
    	}
    
    }
    

    复制已有的内容

    import java.util.EnumSet;
    
    //=================================================
    // File Name       :	EnumSet_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 枚举类名:Color
    // 属性:
    // 方法:
    enum color_{
    	RED,GREEN,BLUE;		//定义枚举的3个类型
    }	
    
    
    //主类
    //Function        : 	EnumSet_demo;
    public class EnumSet_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		
    		EnumSet<Color> esOld = null;				//声明一个EnumSet对象
    		EnumSet<Color> esNew = null;				//声明一个EnumSet对象
    		esOld = EnumSet.noneOf(Color.class);			//创建一个可以加入Color类型的对象
    		esOld.add(Color.BLUE);
    		esOld.add(Color.RED);
    
    		esNew = EnumSet.copyOf(esOld);					//从已有的集合中复制出内容
    		print(esNew);
    	}
    	
    	public static void print(EnumSet<Color> temp){		//专门的输出操作
    		for(Color c:temp){															//循环输出EnumSet中的内容
    			System.out.println(c+"、");
    		}
    	}
    
    }
    

    让枚举类实现一个接口

    在接口中定义了一个getColor()方法,枚举类在实现此接口之后,就必须对枚举类中的每个对象分别实现接口中的getColor()方法

    //=================================================
    // File Name       :	InterfaceEnum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 接口名:Print
    // 属性:
    // 方法:
    interface Print_{									//定义Print方法
    	public String getColor();				//定义抽象方法
    }
    
    //枚举类名:Color
    //属性:
    //方法:
    enum color_1 implements Print_{				//枚举类实现接口
    	RED{															//枚举对象实现抽象方法
    		@Override
    		public String getColor() {
    			// TODO 自动生成的方法存根
    			return "红色";
    		}
    	},
    	BLUE{
    		@Override
    		public String getColor() {
    			// TODO 自动生成的方法存根
    			return "蓝色";
    		}
    	},
    	GREEN{
    		@Override
    		public String getColor() {
    			// TODO 自动生成的方法存根
    			return "绿色";
    		}
    	};
    }	
    
    
    //主类
    //Function        : 	InterfaceEnum_demo;
    public class InterfaceEnum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		for(color_1 c:color_1.values()){							//循环输出EnumSet中的内容
    			System.out.println(c.getColor()+"、");
    		}
    	}
    
    }
    

    在枚举类中定义抽象方法

    //=================================================
    // File Name       :	InterfaceEnum_demo
    //------------------------------------------------------------------------------
    // Author          :	Common
    
    // 接口名:Print
    // 属性:
    // 方法:
    interface Print_{									//定义Print方法
    	public String getColor();				//定义抽象方法
    }
    
    //枚举类名:Color
    //属性:
    //方法:
    //enum color_1 implements Print_{				//枚举类实现接口
    //	RED{															//枚举对象实现抽象方法
    //		@Override
    //		public String getColor() {
    //			// TODO 自动生成的方法存根
    //			return "红色";
    //		}
    //	},
    //	BLUE{
    //		@Override
    //		public String getColor() {
    //			// TODO 自动生成的方法存根
    //			return "蓝色";
    //		}
    //	},
    //	GREEN{
    //		@Override
    //		public String getColor() {
    //			// TODO 自动生成的方法存根
    //			return "绿色";
    //		}
    //	};
    //}	
    
    enum color_1{				//枚举类实现接口
    	RED{															//枚举对象实现抽象方法
    		@Override
    		public String getColor() {
    			// TODO 自动生成的方法存根
    			return "红色";
    		}
    	},
    	BLUE{
    		@Override
    		public String getColor() {
    			// TODO 自动生成的方法存根
    			return "蓝色";
    		}
    	},
    	GREEN{
    		@Override
    		public String getColor() {
    			// TODO 自动生成的方法存根
    			return "绿色";
    		}
    	};
    	public abstract String getColor();			//定义抽象方法
    }	
    
    
    //主类
    //Function        : 	InterfaceEnum_demo;
    public class InterfaceEnum_demo {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		for(color_1 c:color_1.values()){							//循环输出EnumSet中的内容
    			System.out.println(c.getColor()+"、");
    		}
    	}
    
    }
    
  • 相关阅读:
    node03
    node02
    node01
    Vue-router重修02
    Vue-router重修01
    Vue重修02
    VUE重修01
    利用表达式目录树进行实体映射
    C#托管堆和垃圾回收
    C# 异步锁
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5290869.html
Copyright © 2011-2022 走看看