java 枚举
2013-06-03 18:05
246 查看
如果某“数据集”的元素是稳定的而且个数是有限的(如东南西北、周一到周日、春夏秋冬)可以使用枚举类,个人理解枚举类是预初始化了指定实例的java类,枚举列有很多有趣的用法,伴随EnumSet(高性能Set)和EnumMap(高性能Map)的加入,枚举类变得越来越有意思,如果我们有Set集合或Map集合key有了枚举类的特征(稳定、数目限定等)可以考虑代替HashMap和HashSet加入应用场景。
普通使用方式:
枚举实现接口:
枚举列有很多有趣的用法,伴随EnumSet(高性能Set)和EnumMap(高性能Map)的加入,枚举类变得越来越有意思
普通使用方式:
enum MsgDriveType { WS("WS") { @Override public void detail() { System.out.println("I am WS ..."); } @Override public void show() { System.out.println("Myself show WS ..."); } }, OF("OF") { @Override public void detail() { System.out.println("I am OF ..."); } }, JMS("JMS") { @Override public void detail() { System.out.println("I am JMS ..."); } }, DEFAULT { @Override public void detail() { System.out.println("I am DEFAULT ..."); } }; private String info; // 有参构造 private MsgDriveType(String info) { setInfo(info); } // 无参构造 private MsgDriveType() { setInfo("DEFAULT"); } public void setInfo(String info) { this.info = info; } public String getInfo() { return info; } public abstract void detail(); public void show() { System.out.println("No Override, so show DEFAULT ..."); } } public class Test { public static void main(String[] args) { MsgDriveType[] li = MsgDriveType.values(); for (int i = 0; i < li.length; i++) { // li[i].setInfo(li[i].getInfo() + " @_@"); // System.out.println(li[i].getInfo()); // li[i].detail(); // li[i].show(); System.out.println(li[i].ordinal() + "\t" + li[i].name() + "\t" + li[i].toString()); } } }
枚举实现接口:
//枚举的接口组织形式 interface Food { void showSelf();//接口抽象方法 //接口自己的内部类 实现了此 接口 class a implements Food { @Override public void showSelf() { System.out.println("aaaaaaa"); } } // 接口内部的 枚举类 实现了此 接口 enum Coffee implements Food { BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO;//即使枚举没有实例,这里的分号也是必须的(如果后面有属性或方法的话) @Override public void showSelf() { System.out.println("枚举公共实现:" + this.name());//Enum.name() } } // 接口实现 枚举 实例具体实现 enum Dessert implements Food { FRUIT { @Override public void showSelf() { System.out.println("FRUIT"); } }, CAKE { @Override public void showSelf() { System.out.println("CAKE"); } }, GELATO { // 注释后使用默认实现 // @Override // public void showSelf() { // System.out.println("GELATO"); // } }; //默认实现 @Override public void showSelf() { System.out.println("Default"); } } } public class Test { public static void main(String[] args) { Food food = new Food.a(); food = Food.Coffee.BLACK_COFFEE; food = Food.Coffee.DECAF_COFFEE; food = Food.Coffee.LATTE; food = Food.Coffee.CAPPUCCINO; food = Food.Dessert.FRUIT; food = Food.Dessert.CAKE; food = Food.Dessert.GELATO; food.showSelf(); } }
枚举列有很多有趣的用法,伴随EnumSet(高性能Set)和EnumMap(高性能Map)的加入,枚举类变得越来越有意思
相关文章推荐
- java 枚举
- 比较java枚举成员使用equal还是==
- Effective Java笔记(不含反序列化、并发、注解和枚举)
- java高新技术_枚举反射内省(黑马程序员)
- MyBatis 中如何调用 Java 的 enum (枚举) 字段
- 黑马程序员——java中的枚举
- 黑马程序员_高新技术:2) 枚举、内省JavaBean
- 为什么要用枚举实现Singleton--java
- Java中的枚举类型
- java 注解 Target 枚举中的含义
- java1.5新特性之枚举总结
- java 枚举
- java8——使用lambda和枚举实现简洁、可读性良好的策略模式
- Java枚举详解及使用实例(涵盖了所有典型用法)
- Java 中的枚举
- 黑马程序员_java学习日记_Java高新技术_枚举
- Java记录 -79- 枚举(Enums)
- 深入探讨Java枚举的实现
- 说说Java中的枚举(小姐)
- Java 枚举与类的区别