1)枚举类的两种定义方法 1》通过构造器 public enum Grade{ A("A", "90-100"),B("B","80-89"),C("C", "70-79"),D("D", "80-89"),E("E", "90-100"); private String tip; private String desc; private Grade(String tip, String desc){ this.tip = tip; this.desc = desc; } public String getTip() { return tip; } public String getDesc() { return desc; } } 2》通过匿名内部类(一般用于有抽象方法的枚举) eg: public enum Season {//注意:含有抽象方法的枚举类不用加abstract SPRING{ @Override public void show(){ System.out.println("春天"); } },SUMMER{ @Override public void show() { System.out.println("夏天"); } },AUTOMN{ @Override public void show() { System.out.println("秋天"); } },WINNTER{ @Override public void show() { System.out.println("冬天"); } }; //抽象方法 public abstract void show(); } 3)switch语句和枚举类的联用 eg: Season season = Season.SPRING; String msg = null; switch(season){ case SPRING:msg = "1"; break;//注意不是Season.SPRING case SUMMER:msg = "2"; break; case AUTOMN:msg = "3"; break; case WINNTER:msg = "4"; break; } System.out.println(msg); 4)枚举类常用方法 1》String name():返回枚举值的名称 2》int ordinal():显示枚举值对应的索引,从0开始 3》type[] values():获得该枚举类对应的所有枚举值,返回一个数组 4》static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)://将字符串转换成带指定名称的指定枚举类型的枚举常量。 eg: Season season = Season.SPRING; System.out.println(season.name());//SPRING System.out.println(season.ordinal());//0【下标】 Season[] seasons = season.values();//获得属性值数组 for(Season s : seasons){ System.out.println(s.name()); } //Season.valueOf(Season.class, "QQ");//可判断QQ是否属于枚举值之一, //抛出IllegalArgumentException:异常 System.out.println("=="+Season.valueOf(Season.class, "SPRING").name());//正常:SPRING. //Season.valueOf(Season.class, "spring");//也会抛出异常 5)理解: 1》枚举类中的每一个枚举值,相当于是实例变量 2》枚举类与普通类一致,可以继承或实现,如果有抽象方的话,可以利用每个枚举类以匿名内部类的方式去实现 3》枚举值可以用在switch语句的case后面,并且直接些枚举值,不需要加上枚举类。 4》若枚举类只有一个枚举值,则可类似于单例设计模式。 补充:注意枚举类和枚举集合的区别.Enum Enumeration
eration
时间: 2024-10-03 14:01:07