文章目录
枚举
枚举就是在当前枚举类中只能有罗列出的几个实例
枚举的基本认识
public enum A {
//枚举类的第一行必须罗列的是枚举对象的名字
//枚举就是在当前类A中示例对象只能有X,Y,Z这三个实例类
X,Y,Z;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//使用枚举
public static void main(String[] args) {
A a1 = A.X;
System.out.println(a1);
//在编译成class时,会自动添加values和valueOf,name(),ordinal()等方法
A[] as = A.values();//取全部对象
Arrays.stream(as).forEach(System.out::println);
A a3 = A.valueOf("Z");
System.out.println(a3.name());
System.out.println(a3.ordinal());
}
抽象枚举
public enum A {
x(){
@Override
public void go() {
System.out.println("x");
}
};
public abstract void go();
}
枚举的使用场景
单例设计模式
//枚举一个就是单例
public enum A {
X;
public void go(){
System.out.println("单例");
}
}
信息推荐
比如,当图书阅读软件向用户推送内容时,根据男女不同推送,搭配case选择就很优雅
当然这种也可以用常量去选择,有利有弊,各有千秋
常量可选更多,更灵活,枚举更死板,更有利于代码开发的规范
public static void main(String[] args) {
check(A.BOY);
}
public static void check(A sex){
switch (sex){
case BOY:
System.out.println("Boy");
break;
case GIRL:
System.out.println("Girl");
break;
}
}
public enum A {
BOY,GIRL;
}