欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础=>分析Java1.5新特性-枚举

程序员文章站 2024-03-17 18:02:46
...

一.什么是枚举?

在java编程过程中,我们通常需要定义一些固定数量的常量,在jdk1.5以前,通常的做法是定义一个静态常量类,但自jdk1.5后,java引入了枚举(关键字enum,全称为 enumeration,值类型),在枚举中,我们可以把相关的常量分组到一个枚举类型里,枚举也比常量类有更多灵活的用法,使用枚举,可以有效的提高代码的整洁性、可读性、可维护性等等

二.枚举的创建

- 将类用 关键字 `enum` 修饰
- 枚举类中的数据每个枚举对象使用`,`隔开,`最后一个枚举对象`使用`;`结束。
- 可以在枚举类中声明属性, 声明的数据是类中所有枚举对象共有的
- 可以在枚举类中自定义方法:如果根据枚举对象的某个属性查询所属枚举

三.枚举常用场景

  • 作为普通的常量使用,如星期、季节、颜色、城市等等;通常配合switch语句使用。
//周一到周天枚举
public enum WeekEnum {
    MON,TUES,WED,THURS,FRI,SAT,SUN;
}

//jdk1.7开始switch语句开始支持String类型,而jdk1.6之前只支持int,char,enum类型,使用枚举的话,能使代码的可读性大大增强
public class TestEnum {
    public static void main(String[] args) {
        WeekEnum week = WeekEnum.TUES;
        switch (week) {
            case MON:
                System.out.println("星期一");
                break;
            case TUES:
                System.out.println("星期二");
                break;
            case WED:
                System.out.println("星期三");
                break;
            case THURS:
                System.out.println("星期四");
                break;
            case FRI:
                System.out.println("星期五");
                break;
            case SAT:
                System.out.println("星期六");
                break;
            case SUN:
                System.out.println("星期天");
                break;
        }
    }
}
  • 作为普通的常量使用,如星期、季节、颜色、城市等等;通常配合switch语句使用。
enum AddressEnum {
    HUNAN("湖南", "1101"),
    GUANGDONG("广东", "1102"),
    SICHUANG("四川", "1103"),
    JIANGXI("江西", "1104"),;

    private String address;
    private String code;

    private AddressEnum(String address, String code) {
        this.address = address;
        this.code = code;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public  static String getAddressName(String addressCode){
        for(AddressEnum  addressEnum : AddressEnum.values()){
            if(addressEnum.getCode().equals(addressCode)){
                return  addressEnum.getAddress();
            }
        }
        return  null;
    }

    public  static String getAddressCode(String addressName){
        for(AddressEnum  addressEnum : AddressEnum.values()){
            if(addressEnum.getAddress().equals(addressName)){
                return  addressEnum.getCode();
            }
        }
        return  null;
    }

    public static void main(String[] args) {
        System.out.println(AddressEnum.GUANGDONG.getAddress());
        System.out.println(AddressEnum.GUANGDONG.getCode());
        System.out.println( AddressEnum.getAddressCode("湖南"));
        System.out.println( AddressEnum.getAddressName("1102"));
    }
}

//打印
//广东
//1102
//1101
//广东

四.enum 对象的常用方法介绍

方法 描述
int compareTo(E o) 比较此枚举与指定对象的顺序。
Class getDeclaringClass() 返回与此枚举常量的枚举类型相对应的 Class 对象。
String name() 返回此枚举常量的名称,在其枚举声明中对其进行声明。
int ordinal() 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
String toString() 返回枚举常量的名称,它包含在声明中。
static <T extends Enum> T valueOf(Class enumType, String name) 返回带指定名称的指定枚举类型的枚举常量。可以实现将普通字符串转换为枚举实例
values 该方法可以将枚举类型成员以数组的形式返回