Java Enum枚举类
枚举类: 定义一种事物的所有可能|情况
1.使用enum定义枚举,枚举是类,所有的枚举类,都会隐式的继承自java.lang.Enum–>构造器受保护的
2.枚举中的所有字段,都是该类型的一个实例,枚举类型不允许外部构建对象,默认构造器是私有的
枚举中的字段–>public static final
public class EnumDemo {
public static void main(String[] args) {
Week s=Week.Sun;//枚举类型的实例对象
Week f=Week.Fri;
//类方法:String name() 枚举对象在枚举类中的字段名
System.out.println(s.name());
//ordinal() 字段在枚举类中的位置-----索引值
System.out.println(s.ordinal());//1
System.out.println(f.ordinal());//0
//values() 获取枚举类中的所有枚举对象 返回值类型为Week数组类型
System.out.println(Arrays.toString(s.values()));//[Fri, Sun]
//将枚举实例传参
Worker w01=new Worker("zz", State.busy);
Worker w02=new Worker("zz", State.free);
//判断枚举类型数据
switch (w02.state) {
case free:
System.out.println("加班一天");
break;
case busy:
System.out.println("休息一天");
break;
default:
break;
}
//设置枚举类私有属性值
Week j=Week.Fri;
j.setWeekName("周五");
j.test();
}
}
//定义枚举类Week
enum Week{
Fri,
Sun;
private String weekName;
public String getWeekName() {
return weekName;
}
//私有属性的设置器
public void setWeekName(String weekName) {
this.weekName = weekName;
}
//自定义私有属性的打印方法
public void test(){
System.out.println(" "+weekName);
}
}
//定义枚举类State
enum State{
free,
busy;//实例结束
}
//定义员工类
class Worker{
String name;
State state;
public Worker() {
super();
// TODO Auto-generated constructor stub
}
public Worker(String name, State state) {
super();
this.name = name;
this.state = state;
}
@Override
public String toString() {
return "Worker [name=" + name + ", state=" + state + "]";
}
}