笔记本上没记过,就在这里写一写吧
1枚举类型定义
enum WeekDay
{
SUNDAY,MONDAY,TUESDAY,WEDNESDAY,
THURSDAY,FRIDAY,SATURDAY;
}
public class EnumDemo
{
public static void main(String[] args)
{
WeekDay rest = WeekDay.SUNDAY;
System.out.println(rest);
}
}
2枚举类型方法
方法摘要 | ||
---|---|---|
protected Object | clone() 抛出 CloneNotSupportedException。 | |
int | compareTo(E o) 比较此枚举与指定对象的顺序。 | |
boolean | equals(Object other) 当指定对象等于此枚举常量时,返回 true。 | |
Class<E> | getDeclaringClass() 返回与此枚举常量的枚举类型相对应的 Class 对象。 | |
int | hashCode() 返回枚举常量的哈希码。 | |
String | name() 返回此枚举常量的名称,在其枚举声明中对其进行声明。 | |
int | ordinal() 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。 | |
String | toString() 返回枚举常量的名称,它包含在声明中。 | |
static
| valueOf(Class<T> enumType, String name) 返回带指定名称的指定枚举类型的枚举常量。 |
下面代码可以输出每个枚举长两名和它们的顺序号:
for(WeekDay d : WeekDay.values())
{
System.out.println(d + ", ordinal" +d.ordinal());
}
枚举类型有个特别实用的特性,它可以在switch语句中使用:
public class EnumTest
{
WeekDay day;
public EnumTest(WeekDay day)
{
this.day = day;
}
public void describe()
{
switch(day)
{
case MONDAY:
System.out.println("Mondays are bad.");
break;
case FRIDAY:
System.out.println("Fridays are better.");
break;
case SATURDAY:
case SUNDAY:
System.out.println("Weekends are best.");
break;
default:
System.out.println("Midweek days are so-so.");
break;
}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
EnumTest firstDay = new EnumTest(WeekDay.MONDAY);
firstDay.describe();
EnumTest thirdDay = new EnumTest(WeekDay.WEDNESDAY);
thirdDay.describe();
EnumTest seventhDay = new EnumTest(WeekDay.SUNDAY);
seventhDay.describe();
}
}
3枚举类型的构造方法
在枚举类型的声明中,除了枚举常量外,还可以声明构造方法,成员变量和其他方法
public class MealDemo
{
public enum Meal
{ //内部枚举
BREAKFAST(7,30),LUNCH(12,15),DINNER(19,45);
private int hh;
private int mm;
Meal(int hh,int mm) //枚举的构造方法
{
assert(hh >= 0 && hh <= 23):"小时范围非法.";
assert(mm >= 0 && mm <= 59):"分钟范围非法";
this.hh = hh;
this.mm = mm;
}
public int getHour()
{return hh;}
public int getMins()
{return mm;}
}
public static void main(String[] args)
{
Meal bf = Meal.BREAKFAST;
System.out.println("早饭时间:" + bf.getHour() +":"+ bf.getMins());
}
}