-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
一、枚举
一、概述:
1、通过enum定义枚举类,枚举类是一个特殊的类,每个元素都是该类的一个实例对象。
2、用枚举类规定值,以后用此类型定义的值只能是这个类中规定好的那些值,若不是这些值,编译器不会通过。
3、如果调用者想打印枚举类中元素的信息,需由编写此类的人定义toString方法。
4、采用抽象方法定义的nextDay可将大量的if else语句转换成了一个个独立的类。
5、如果想在一个类中编写完每个枚举类和测试调用类,那么可将枚举类定义成调用类的内部类。
示例:
package cn.itcast.day01;
public abstract class WeekDay1 {
private WeekDay1(){};
public final static WeekDay1 Mon=new WeekDay1(){
@Override
public WeekDay1 nexDay() {
// TODO Auto-generated method stub
return Tue;
}};
public final static WeekDay1 Tue=new WeekDay1(){
@Override
public WeekDay1 nexDay() {
// TODO Auto-generated method stub
return Mon;
}};
// public WeekDay nexDay(){
// if(this==Mon){
// return Tue;
// }else{
// return Mon;
// }
//
// }
public abstract WeekDay1 nexDay();
public String toString(){
return this==Mon?"Mon":"Tue";
}
}
二、枚举的基本应用
示例:定义一个Weekday的枚举。
public class EnumText {
public static void main(String[] args) {
WeekDayTest weekDay = WeekDayTest.MON;
System.out.println(weekDay.nextDay());
WeekDay weekDay2 = WeekDay.FRI;
System.out.println("获取此对象:" + weekDay2);
System.out.println("获取对象名称:" + weekDay2.name());
System.out.println("获取排行:" + weekDay2.ordinal());
System.out.println("获取类名:" + weekDay2.getClass());
//静态方法:
System.out.println("通过字符串获取对象:"+WeekDay.valueOf("SUN"));
System.out.println("将元素存入数组:"+WeekDay.values().length);
}
示例:定义星期枚举类。
public enum WeekDay{
SUN(1),MON,TUE,WED,THI,FRI,SAT;
private WeekDay(){
System.out.println("first");
}
private WeekDay(int x){
System.out.println("second");
}
}
示例:定义交通灯。
public enum TrafficLamp{
SUN(1),MON,TUE,WED,THI,FRI,SAT;
private WeekDay(){
System.out.println("first");
}
private WeekDay(int x){
System.out.println("second");
}
}
一)常用方法:
1)toString() :回枚举量的名称。
2)ordina() : 返回枚举值在枚举类中的顺序,按定义的顺序排。
3)getClass() :获取对应的类名。
二)静态方法:
1)valueOf(String e) : 转为类中对应的对象,即将字符串转为对象。
2)values() :获取数组,将元素放入一个数组中。
注意:
1)枚举只有一个成员时,就可以作为一种单例的实现方式。
2)元素列表即所有的元素项目,必须放在整个类的最前面。
-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------