枚举类:用enum关键字来定义一个枚举类

时间:2023-03-06 17:20:48
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