Android开发之枚举(Enum)在实际项目中的应用
1、查看枚举支持调用哪些方法,在Android Studio快速按下两下shift,查找Enum类源码所有使用enum标识的,统一继承自Enum抽象类,也就继承Enum类的方法和属性,枚举支持调用的方法除了继承的方法外,还可以调用添加的方法。查看JDK 1.8包的Enum源码,如下图:

3、开发者不能在外部包中调用protected修饰的构造方法,所以可以猜测它可能在程序内部调用,实际上代码被编译器执行,为响应我们用enum标识的枚举类型时调用Enum(String,int)构造方法,而我们声明的成员:ZHAOYUN、ZHANGFEI、LIUBEI,将被以字符串name的形式传入,ordinal从0开始依次分配,其他方法的使用情况如下:
4、name(),返回枚举常量的名字,测试代码如下:Log.d(TAG, "test: "+ExcellentStudentEnum.LIUBEI.name());运行demo,控制台打印:

6、toString(),返回枚举常量的名字,测试代码如下:Log.d(TAG, "test: "+ExcellentStudentEnum.LIUBEI.toString());运行demo,控制台打印:

8、hashCode(),返回当前枚举常量的哈希码,测试代码如下:Log.d(TAG, "test: "+ExcellentStudentEnum.LIUBEI.hashCode());运行demo,控制台打印:

10、getDeclaringClass(),返回enum标识的枚举的Class名称,测试代码如下:Log.d(TAG, "test: "+ExcellentStudentEnum.LIUBEI.getDeclaringClass());运行demo,控制台打印:

12、values(),这是一个隐藏起来的类方法,因为并不继承Enum类,同时在enum标识的枚举,有没有声明该方法,却可以弋讥孜求使用,所以说values()是一个隐藏的类方法,还是很合适的,测试代码如下:for (ExcellentStudentEnum student : ExcellentStudentEnum.values()) { Log.d(TAG, "test: " +student.getProfession());}运行demo,控制台打印:

14、到此,我们完成enum标识的枚举支持调用方法的学习,其中包括继承自Enum抽象类的1-8个方法,以及隐藏的两个类方法:values()、valueOf(String),对枚举的用法有了更深的认识。