枚举
枚举是一种特殊的类
枚举类的格式:
修饰符 enum 枚举类名{
名称1,名称2,...;
其他成员...
}
public enum A{
X,Y,Z;
...
}
注意:
- 枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开。
- 这些名称,本质是常量,每个常量都会记住枚举类的一个对象。
枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象。
枚举类的构造器都是私有的,因此,枚举类对外不能创建对象。
枚举类都是最终类,不可以被继承。
枚举类中,从第二行开始,可以定义类的其他各种成员。
编译器为枚举类新增了几个方法,并且枚举类都是继承:java.lang.Enum类的,从enum类也会继承到一些方法。
枚举类提供一些额外的API
A[] a=A.values();//拿到全部对象
A a1=A.valueOf(“Z”);
System.out.println(a1.name());//Z
System.out.println(a1.ordinal());//索引
扩展:抽象枚举
//抽象枚举
public enum B {
X(){
@Override
public void go() {
}
},Y(){
@Override
public void go() {
}
};
public abstract void go();
}
单例模式
public enum B {
X;//单例
}
枚举的常见应用场景:
用来表示一组信息,然后作为参数进行传输;
选择定义一个一个的常量来表示一组信息,并作为参数传输;
参数值不受约束;
选择定义枚举表示一组信息,并作为参数传输;
代码可读性好,参数值得到了约束,对使用者友好,建议使用!