一、枚举类的使用
1.枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类
2.当需要定义一组常量时,强烈建议使用枚举类
3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。
二、如何定义枚举类
方式一:jdk5.0之前,自定义枚举类
public class TestEnum {
public static void main(String[] args) {
Person xg = Person.XG;
System.out.println(xg);
}
}
// 自定义枚举类
class Person {
//1.声明Person对象的属性:private final修饰
private final String Name;
private final String Desc;
//2.私有化类的构造器,并给对象属性赋值
private Person(String Name,String Desc){
this.Name = Name;
this.Desc = Desc;
}
//3.提供当前枚举类的多个对象:public static final的
public static final Person XG = new Person("小刚","xiaogang");
public static final Person XH = new Person("小红","xiaohong");
public static final Person XM = new Person("小明","xiaoming");
public String getName() {
return Name;
}
public String getDesc() {
return Desc;
}
@Override
public String toString() {
return "Person{" +
"Name='" + Name + '\'' +
", Desc='" + Desc + '\'' +
'}';
}
}
方式二:jdk5.0,可以使用enum关键字定义枚举类
public class TestEnum1 {
public static void main(String[] args) {
Person1 person1 = Person1.XIAOGANG;
// toString():返回枚举类对象的名称
System.out.println(person1);
}
}
//使用enum关键字枚举类
enum Person1 {
//1.提供当前枚举类的对象,多个对象之间用","隔开,末尾对象";"结束
XIAOGANG("小刚","xiaogang"),
XIAOMING("小明","xiaoming");
//2.声明Season对象的属性:private final修饰
private final String Name;
private final String Desc;
//2.私有化类的构造器,并给对象属性赋值
private Person1(String Name,String Desc){
this.Name = Name;
this.Desc = Desc;
}
}
没有打印地址的值,所以它的父类并不是 Object,打印一下它的父类发现是 java.lang.Enum
System.out.println(Person1.class.getSuperclass());
三、Enum类中的常用方法
values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”。如不是,会有运行时异常:IllegalArgumentException。
toString():返回当前枚举类对象常量的名称