枚举的示例
来源:互联网 发布:淘宝退款卖家拒绝几次 编辑:程序博客网 时间:2024/05/21 19:29
枚举类
package com.yisces.y_enum;import java.util.EnumMap;import java.util.EnumSet;/** * 定义枚举 * @author yisces * */public enum EnumConstant { //此时每一个枚举就想当与一个类,他们拥有共同的父类,因此要实现父类的getValue方法 ME(1){ @Override public String getValue() { return "我"; } } ,YOU(2){ @Override public String getValue() { return "你"; } } ,HE(3){ @Override public String getValue() { return "他"; } }; private Number num; /** * 待构造参数的枚举 --构造函数只能为私有,可以不写,默认为私有 * @param num */ private EnumConstant(int num){ this.num = num; } public abstract String getValue(); //枚举抽象方法,具体实现由枚举内部类实现 /** * 重写toString方法,这是调用枚举时返回的是对应的num */ public String toString(){ return num.toString(); } /** * 枚举类里可以写静态方法 --用switch判断 * * @author yisces * @param constant * @return */ public static EnumConstant getValueBySwitch(EnumConstant constant){ EnumConstant enumConstant; switch(constant){ case ME: System.out.println("你选择了我"); enumConstant = EnumConstant.ME; break; case YOU: System.out.println("你选择了自己"); enumConstant = EnumConstant.YOU; break; case HE: System.out.println("你选择了他"); enumConstant = EnumConstant.HE; break; default: System.out.println("你选择错误"); enumConstant = null; break; } return enumConstant; } /** * 枚举类里可以写静态方法 --用if判断 * * @author yisces * @param constant * @return */ public static EnumConstant getValueByIf(EnumConstant constant){ EnumConstant enumConstant; if(ME == constant){ System.out.println("你选择了我"); enumConstant = EnumConstant.ME; }else if(YOU == constant){ System.out.println("你选择了你自己"); enumConstant = EnumConstant.YOU; }else if(HE == constant){ System.out.println("你选择了他"); enumConstant = EnumConstant.HE; }else { enumConstant = null; } return enumConstant; } /** * 演示枚举类型的遍历 * * @author yisces */ public static void getEnumLoop(){ EnumConstant[] constantArr = EnumConstant.values(); for(EnumConstant constant : constantArr){ System.out.println("当前枚举的名字:" + constant.name()); System.out.println("当期枚举所在类中的位置:" + constant.ordinal()); System.out.println("当前枚举:" + constant); } } /** * 演示EnumMap的使用,EnumMap跟HashMap的使用差不多,只不过key为枚举类型 * * @author yisces */ public static void getEnumMap(){ //定义EnumMap对象,EnumMap对象的构造函数需要参数传入,默认为key的类的类型 EnumMap<EnumConstant, String> currEnumMap = new EnumMap<EnumConstant, String>(EnumConstant.class); currEnumMap.put(EnumConstant.ME, "我"); currEnumMap.put(EnumConstant.YOU, "你"); currEnumMap.put(EnumConstant.HE, "他"); /* * 遍历Map对象 */ for(EnumConstant constant : EnumConstant.values()){ System.out.println("[key = "+constant.name()+", value = "+currEnumMap.get(constant)+"]"); } } /** * 演示EnumSet使用方法,EnumSet是一个抽象类,获取一个类型的枚举类型内容 * 可以使用allOf方法,allOf创建一个包含所有在指定元素类型的元素的枚举set * public static <E extends Enum<E>> EnumSet<E> allOf(Class<E> elementType) * @author yisces */ public static void getEnumSet(){ EnumSet<EnumConstant> currEnumSet = EnumSet.allOf(EnumConstant.class); for(EnumConstant constant : currEnumSet){ System.out.println("当前EnumSet中数据为:" + constant + ",在枚举类中的位置为:" + constant.ordinal()); } } private static EnumMap<EnumConstant, String> currEnumMap = new EnumMap<EnumConstant, String>(EnumConstant.class); static { currEnumMap.put(EnumConstant.ME, "我"); currEnumMap.put(EnumConstant.YOU, "你"); currEnumMap.put(EnumConstant.HE, "他"); } /** * 综合应用--获取枚举对应的名称 * 上面那种给每个变量别名的方法,自我感觉不好,太分散了,我们可以通过EnumMap的方式加判断的方式来返回对应的别名 * * @author yisces * @return */ public static String getValueByMultiple(EnumConstant enumConstant){ String byname = ""; for(EnumConstant constant : EnumConstant.values()){ if(constant == enumConstant){ System.out.println("[key = "+constant.name()+", value = "+currEnumMap.get(constant)+"]"); byname = currEnumMap.get(constant); break; } } return byname; }}
测试类
package com.yisces.y_enum;public class EnumTest { public static void main(String[] args) { System.out.println(EnumConstant.ME); //重写 toSting方法后 输出结果为1 System.out.println("<------------分割线-------------->"); System.out.println(EnumConstant.ME.getValue()); //调用getValue返回我们定义的当前元素的别名 System.out.println("<------------分割线-------------->"); /* * 两个判断 */ System.out.println(EnumConstant.getValueByIf(EnumConstant.ME)); System.out.println("<------------分割线-------------->"); System.out.println(EnumConstant.getValueBySwitch(EnumConstant.YOU)); System.out.println("<------------分割线-------------->"); /* * 三个遍历 */ System.out.println("普通遍历:"); EnumConstant.getEnumLoop(); //普通遍历 System.out.println("<------------分割线-------------->"); System.out.println("EnumMap遍历:"); EnumConstant.getEnumMap(); //EnumMap遍历 System.out.println("<------------分割线-------------->"); System.out.println("EnumSet遍历:"); EnumConstant.getEnumSet(); //EnumSet遍历 /* * 综合应用 */ System.out.println("<------------分割线-------------->"); System.out.println(EnumConstant.getValueByMultiple(EnumConstant.ME)); }}
测试结果截图
0 0
- 枚举的示例
- java 枚举的使用示例
- C#枚举类型的使用示例
- 枚举与字符串的互化示例
- C#枚举类型的使用示例
- JAVA的枚举enum类型 && JAVA的JSON示例
- 枚举enum简单示例
- java-枚举示例
- 枚举类示例
- 枚举简单示例
- scala.Enumeration 枚举示例
- java枚举类型示例
- C# 枚举 简单示例
- Enumdisk1.exe:用于枚举磁盘设备的 Enumdisk 示例
- 在项目中简单使用枚举的示例代码
- C/C++枚举注册表某项下的所有键值【代码示例】
- spring mvc4的日期/数字格式化、枚举转换示例
- Java枚举(用Java普通类模拟枚举的实现原理及JDK枚举API使用示例)
- 104. Maximum Depth of Binary Tree
- 关于WordPress的一些学习方法
- Notes: Java的方法重载机制和良好的编程习惯
- 为什么hash作为内存使用的经典数据结构?
- WordPress菜单导航功能设置教程
- 枚举的示例
- JavaScript 总结onchange、onpropertychange、oninput事件的用法和区别
- 堆和栈的区别
- python中常见编写代码的陷阱
- HDU 4193 Non-negative Partial Sums(前缀和非负点个数,单调队列)
- Android梳理不常用widget篇
- mysql中的函数 存储过程和触发器
- 安卓中的延时启动 与 JAVA中的计时器/定时器类
- Codeforces 371C:Hamburgers(二分)