enum 枚举类型定义常量及调用的应用举例

目录

枚举的声明形式

第一种 静态变量

第二种 含一个值

第三种-重点关注里面包含的静态方法

第四种 整形举例

测试方法-调用第三种

结果


枚举的声明形式

本文价值最高的是  第三种 举例

第一种 静态变量

public enum Str0Enum {
	INIT,ACTICVE,FREEZE;
}

第二种 含一个值

public enum Str1Enum {
	INIT("初始状态"),
	ACTIVE("激活状态"),
	FREEZE("冻结状态");
	private String name;
	public String getName() {
		return name;
	}
	Str1Enum(String name){
		this.name=name;
	}
}

第三种-重点关注里面包含的静态方法

包含了 通过 枚举名字、枚举序数(从0开始)、枚举key、枚举value 返回枚举的方法

其中 通过 枚举名字、枚举序数(从0开始) 是JDK自带了基础方法

public enum Str2Enum {
	
	INIT("init","初始化"),
	ACTIVE("active","激活"),
	FREEZE("freeze","冻结");
	
	private String key;
	private String value;
	public String getKey() {
		return key;
	}
	public String getValue() {
		return value;
	}
	Str2Enum(String key,String value){
		this.key=key;
		this.value=value;
	}
	/**
	 * 根据key值得到对应的枚举类型-根据枚举内容决定是否有本方法
	 * @param columnName
	 * @return
	 */
	public static Str2Enum getStr2EnumByKey(String key){
		if("init".equals(key)){
			return INIT;
		}else if("active".equals(key)){
			return ACTIVE;
		}else if("freeze".equals(key)){
			return FREEZE;
		}
		return null;
	}
	
	/**
	 * 根据枚举 value 返回枚举-根据枚举内容决定是否有本方法
	 * @param value
	 * @return
	 */
	public static Str2Enum getStr2EnumByValue(String value){
		if("初始化".equals(value)){
			return INIT;
		}else if("激活".equals(value)){
			return ACTIVE;
		}else if("冻结".equals(value)){
			return FREEZE;
		}
		return null;
	}
	
	/**
	 * 根据枚举名字返回类型-所有枚举类都可以有
	 * @param name
	 * @return
	 */
	public static Str2Enum getStr2EnumByName(String columnName){
		return Str2Enum.valueOf(columnName);
	}
	/**
	 * 根据索引数返回枚举类型-所有枚举类都可以有
	 * @param index
	 * @return
	 */
	public static Str2Enum getStr2EnumByIndex(int index){
		return Str2Enum.values()[index];
	}

    public static void main(String[] args) {
		System.out.println("输出枚举名字:"+Str2Enum.ACTIVE);
		System.out.println("输出枚举key:"+Str2Enum.ACTIVE.getKey());
		System.out.println("输出枚举value:"+Str2Enum.ACTIVE.getValue());
		System.out.println("根据 value 值获取枚举:"+Str2Enum.getStr2EnumByValue("冻结"));
		System.out.println("根据 key 值获取枚举:"+Str2Enum.getStr2EnumByKey("init"));
		System.out.println("根据序数获取枚举:"+Str2Enum.getStr2EnumByIndex(0));
		System.out.println("根据 枚举名字 值获取枚举:"+Str2Enum.getStr2EnumByName("INIT"));
	}
	
}

第四种 整形举例

public enum Str3Enum {
	INIT(10,"初始化"),
	ACTIVE(20,"激活"),
	FREEZE(30,"冻结");
	
	private int key;
	private String value;
	public int getKey() {
		return key;
	}
	public String getValue() {
		return value;
	}
	
	Str3Enum(int key,String value){
		this.key=key;
		this.value=value;
	}
}

测试方法-调用第三种

public static void main(String[] args) {
		System.out.println("输出枚举名字:"+Str2Enum.ACTIVE);
		System.out.println("输出枚举key:"+Str2Enum.ACTIVE.getKey());
		System.out.println("输出枚举value:"+Str2Enum.ACTIVE.getValue());
		System.out.println("根据 value 值获取枚举:"+Str2Enum.getStr2EnumByValue("冻结"));
		System.out.println("根据 key 值获取枚举:"+Str2Enum.getStr2EnumByKey("init"));
		System.out.println("根据序数获取枚举:"+Str2Enum.getStr2EnumByIndex(0));
		System.out.println("根据 枚举名字 值获取枚举:"+Str2Enum.getStr2EnumByName("INIT"));
	}

结果

输出枚举名字:ACTIVE
输出枚举key:active
输出枚举value:激活
根据 value 值获取枚举:FREEZE
根据 key 值获取枚举:INIT
根据序数获取枚举:INIT
根据 枚举名字 值获取枚举:INIT

 

你可能感兴趣的:(java基础)