首页 > 代码库 > 中秋佳节--理解Enum枚举
中秋佳节--理解Enum枚举
一.Enum枚举的作用
1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象;
Eg:
Public enum Color{ RED, GREEN,BULE;}
说明:RED实际上就表示的是枚举的名称,默认的编号是0,可以使用ordinal()方法获得。
2.使用enum关键字定义枚举类,其中包含的对象可以初始化定义(初始化构造函数)
Eg:
package cn.test.java.enums;enum ColorDemo{ RED("红色"),GREEN("绿色"),BLUE("蓝色"); private String name; private ColorDemo(String name){ this.setName(name); } public void setName(String name){ this.name = name; } public String getName(){ return this.name; }}public class ConstructorEnum { public static void main(String[] args) { for(ColorDemo c : ColorDemo.values()){ System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")"); } }}
说明:在枚举类中定义属性及自己的构造方法,但是一旦定义有参数构造之后,在声明枚举对象的时候,就必须明确的调用构造方法,并进行传递参数。
3.在枚举中实际上已经实现好Comparable接口,所以枚举中的内容是可以排序的;
Eg:
package cn.test.java.enums;enum ColorDemo{ RED("红色"),GREEN("绿色"),BLUE("蓝色"); private String name; private ColorDemo(String name){ this.setName(name); } public void setName(String name){ this.name = name; } public String getName(){ return this.name; }}public class ConstructorEnum { public static void main(String[] args) { for(ColorDemo c : ColorDemo.values()){ System.out.println(c.ordinal()+"--->"+c.name()+"("+c.getName()+")"); } }}
二.EnumMap 和EnumSet的使用
EnumMap是Map类的子类,所以它的所有方法都是从Map类中继承过来的,使用方法如下
Eg:
package cn.test.java.enums;import java.util.EnumMap;import java.util.Map;public class EunmMapDemo { public static void main(String[] args) { Map<Color,String> desc = null; desc = new EnumMap<Color,String>(Color.class); desc.put(Color.blus,"蓝色"); desc.put(Color.green,"绿色"); desc.put(Color.red,"红色"); System.out.println("===输出全部内容"); for(Color c : Color.values()){ System.out.println(c.name()+"--->"+desc.get(c)); } System.out.println("===输出全部键"); for(Color c: desc.keySet()){ System.out.println(c.name()+"、"); } System.out.println(); System.out.println("=== 输出全部值"); for(String s:desc.values()){ System.out.println(s+"、"); } }}
EnumSet类是Set类中的子类,它使用方法中都是以静态形式继续该类方法
Eg:
package cn.test.java.enums;import java.util.EnumSet;public class EunmSetDemo { public static void main(String args[]){ EnumSet<Color> es = null ; // 声明一个EnumSet对象 System.out.println("===EnumSet.allOf(Color.class) =====") ; es = EnumSet.allOf(Color.class) ; // 将枚举的全部类型设置到EnumSet对象之中 print(es) ; } public static void print(EnumSet<Color> temp){ // 专门的输出操作 for(Color c:temp){ // 循环输出EnumSet中的内容 System.out.print(c + "、") ; } System.out.println() ; }};
三.枚举类的其他使用
1.枚举类型可以跟普通类一样实现接口,从但是实现接口的时候 要求枚举中的每个对象都必须单独覆写接口中的抽象方法。
Eg:
package cn.test.java.enums;interface Print{ public String getColor();}enum Colors implements Print{ RED{ public String getColor(){ return "红色"; } }, GREEN{ public String getColor(){ return "绿色"; } }, BLUS{ public String getColor(){ return "蓝色"; } };}public class InterfaceEunmDemo { public static void main(String[] args) { for(Colors c:Colors.values()){ System.out.println(c.getColor()+"、"); } }}
2.枚举类中定义了抽象方法,但是要求枚举中的每个对象都分别实现此抽象方法。
Eg:
package cn.test.java.enums;enum ColorDemo2 implements Print{ RED{ public String getColor(){ return "红色"; } }, GREEN{ public String getColor(){ return "绿色"; } }, BLUS{ public String getColor(){ return "蓝色"; } }; }public class AbstractMethodEunm { public static void main(String[] args) { for(ColorDemo2 c: ColorDemo2.values()){ System.out.println(c.getColor()+"、"); } }}
中秋佳节--理解Enum枚举
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。