目录
1.初识枚举
- enum的父类是Enum,但是enum不能写extends Enum
public enum Color {
//枚举常量,区分大小写
//在构造方法之前,指定实例化对象
BLUE("#0000ff"), RED("#ff0000"), GREEN("#00ff00");
private String code;
//自带私有的构造方法
Color(String code) {
this.code = code;
}
//不需要set方法,因为一开始就将实例化对象创建好了,无需改变
public String getCode() {
return code;
}
public void print() {
System.out.println("颜色编码" + this.getCode());
}
public static void main(String[] args) {
Color[] colors = Color.values();
for (Color c : colors) {
//每一个枚举对象都有一个下标ordinal,下标是int类型
System.out.println(c.name() + ":" + c.getCode()+":"+c.ordinal());
}
Color red = Color.valueOf("Red");
System.out.println(red);
Color c = Color.GREEN;
//switch(字符、数组、字符串、枚举)
switch (c) {
case RED:
System.out.println(RED);
break;
case BLUE:
System.out.println(BLUE);
break;
case GREEN:
System.out.println(GREEN);
break;
default:
System.out.println("不存在");
}
}
}
2.Enum类
在Enum类里面有以下方法:
1.构造方法
protected Enum(String name, int ordinal)
2.取得枚举名字
public final String name()
3.取得枚举序号:
public final int ordinal()
- enum与Enum区别:
enum是一个关键字,使用enum定义的枚举类本质上就相对于一个类继承了Enum这个抽象类而已。
3. 定义结构
-
可以在枚举中定义属性、方法、实现接口。
- 枚举不能继承,因为它默认继承Enum,而Java是单继承。
4.应用
public enum Gender {
//即使没有枚举常量 也应写上 ;
FEMALE("女"),MALE("男");
private String type;
Gender(String type){
this.type=type;
}
public String getType() {
return type;
}
public String toString(){
return "性别:"+this.getType()+" "+this.name().toLowerCase();
}
public static void main(String[] args) {
try {
Gender gender= Gender.valueOf(args[0].toUpperCase());
System.out.println(gender); //toString()
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("需要指定参数:"+e.getMessage());
}catch (IllegalArgumentException e){
System.out.println("指定对象的类型错误!");
}
}
}
- 枚举类:
1.自带私有的构造方法
2.指定实例化对象,构造方法之前
3.枚举类同样可以指定成员属性,通常属性在构造时初始化,并提供getter方法
4.访问枚举类的实例化对象,直接通过类名访问:类名.对象名
5.获取枚举类的所有实例化对象,通过类名.values( ) ;
6.通过枚举的实例化对象名(常量名)获取对象 类名.valueOf
示例代码见:https://blog.csdn.net/qq_42142477/article/details/84134742 (多例设计模式——代码示例2)