首页 > 代码库 > Java SE学习之枚举总结
Java SE学习之枚举总结
本文是学习网络上的文章时的总结以及自己的一点实践,感谢大家无私的分享。
最近在看Java基础方面的书的时候,又遇到了枚举的介绍。在网上查了一些资料,对这些资料进行一些总结。
用法一:常量
package meiju; /** * * @ClassName: Color * @Description: 枚举变量的常量用法 * @author zhangjunshuai junshuaizhang@163.com * @date 2014-11-16 下午07:29:40 * */ public enum Color { RED,GREEN,BLANK,YELLOW }
用法二:switch
package meiju; /** * * @ClassName: Signal * @Description: 枚举的switch用法 * @author zhangjunshuai junshuaizhang@163.com * @date 2014-11-16 下午07:33:32 * */ enum Signal{ GREEN,YELLOW,RED } public class EnumForswitch { Signal color = Signal.RED; public void change(){ switch(color){ case RED: System.out.println("红色"); break; case YELLOW: System.out.println("金黄色"); break; case GREEN: System.out.println("绿色"); break; default: System.out.println("最后"); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub } }
用法三:枚举中的方法
package meiju; /** * * @ClassName: ColorMthod * @Description: 枚举的方法 * @author zhangjunshuai junshuaizhang@163.com * @date 2014-11-16 下午07:35:09 * */ enum ColorMthod{ RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLOW("黄色",4); private String name; private int index; //枚举的构造方法 介个是怎么一回事呢? private ColorMthod(String name,int index){ this.name = name; this.index = index; } //普通方法 public static String getName(int index){ for(ColorMthod c : ColorMthod.values()){ if(c.getIndex()== index){ System.out.println(c.name); return c.name; } } return null; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } } public class EnumMethod { /** * @param args */ public static void main(String[] args) { ColorMthod.getName(1); } }
用法四:覆盖枚举方法
package meiju; /** * * @ClassName: EnumMethodOverride * @Description: 覆盖方法 * @author zhangjunshuai junshuaizhang@163.com * @date 2014-11-16 下午07:37:04 * */ public class EnumMethodOverride { public enum ColorMethod{ RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLO("黄色",4); private String name; private int index; private ColorMethod(String name,int index){ this.name = name; this.index = index; } @Override public String toString(){ return this.index+"_"+this.name; } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(ColorMethod.RED); } }
用法五:实现接口
package meiju; /** * * @ClassName: Behavior * @Description: 枚举实现接口 * @author zhangjunshuai junshuaizhang@163.com * @date 2014-11-16 下午07:39:28 * */ interface Behavior{ void print(); String getInfo(); } enum ColorInterface implements Behavior{ RED("红色",1),GREEN("绿色",2),BLANK("白色",3),YELLOW("黄色",4); private String name; private int index; private ColorInterface(String name,int index){ this.name = name; this.index = index; } public String getInfo(){ return this.name; } public void print(){ System.out.println(this.index+":"+this.name); } } public class EnumInterface { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ColorInterface.RED.print(); } }
用法六:枚举集合的使用
package meiju; import java.util.EnumMap; import java.util.EnumSet; /** * * @ClassName: EnumLIghtTest * @Description: 枚举的遍历 * @author zhangjunshuai junshuaizhang@163.com * @date 2014-11-16 下午07:41:13 * */ public class EnumLIghtTest { //1.定义枚举类型 public enum Light{ //2.利用构造参数传参 RED(1),GREEN(3),YELLOW(2); //定义私有变量 private int nCode; // 构造函数,枚举类型只能为私用 private Light(int _nCode){ this.nCode = _nCode; } public String toString(){ return String.valueOf(this.nCode); } } /** * @param args */ public static void main(String[] args) { //1.遍历枚举类型 System.out.println("演示枚举类型的遍历……"); testTranversalEnum(); //2.EnumMap对象的使用 System.out.println("演示EnumMap对象的使用和遍历……"); testEnumMap(); //3.演示EnumSet的使用 System.out.println("演示EnumSet对象的使用和遍历……"); testEnumSet(); } /** * 演示枚举类型的遍历 */ private static void testTranversalEnum(){ Light[] allLight = Light.values(); for(Light aLight : allLight){ System.out.println("当前灯name:"+aLight.name()); System.out.println("当前灯ordinal:"+aLight.ordinal()); System.out.println("当前灯:"+aLight); } } /** * 演示EnumMap的使用,EnumMao跟HashMap的使用差不多,只是key值是枚举类型 */ private static void testEnumMap(){ //1.演示定义EnumMap对象,EnumMap对象的构造函数需要参数传入,默认是key的类的类型 EnumMap<Light,String> currEnumMap = new EnumMap<Light, String>(Light.class); currEnumMap.put(Light.RED, "红灯"); currEnumMap.put(Light.GREEN, "绿灯"); currEnumMap.put(Light.YELLOW, "黄灯"); for(Light aLight :Light.values()){ System.out.println("[key="+aLight.name()+",value=http://www.mamicode.com/">
用法七:用接口组织枚举public interface Food { enum Coffee implements Food{ BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO } enum Dessert implements Food{ FRUIT, CAKE, GELATO } }
枚举相对于final static来说,枚举可以减少变量的定义,在switch中的使用有利于代码的执行效率,同时枚举可以自定义内置方法,还有就是枚举可以使用遍历方法。虽然枚举有一些优势但是枚举不是继承。参考:
http://www.iteye.com/topic/1116193
http://blog.csdn.net/p106786860/article/details/11516269
Java SE学习之枚举总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。