Android开发之枚举(Enum)在实际项目中的应用

2025-04-22 15:55:35

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

Android开发之枚举(Enum)在实际项目中的应用

2、绿色符合标识public修饰的方法,表示Enum的子类可以调用的方法,现在来学习每个继承方法的作用,以第三个例子作为测试,看到Enum抽象类的构造方法,代码如下:

Android开发之枚举(Enum)在实际项目中的应用

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

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

Android开发之枚举(Enum)在实际项目中的应用

5、ordinal(),返回枚举序数,测试代码如下:Log.d(TAG, "test: "+ExcellentStudentEnum.LIUBEI.ordinal());运行demo,控制台打印:

Android开发之枚举(Enum)在实际项目中的应用

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

Android开发之枚举(Enum)在实际项目中的应用

7、equals猾诮沓靥(Object other),比较传入的对象是否等于当前的枚举,测试代码如下:Log.d(TAG, "test: "+ExcellentStude荏鱿胫协ntEnum.LIUBEI.equals("LIUBEI"));Log.d(TAG, "test: "+ExcellentStudentEnum.LIUBEI.equals(ExcellentStudentEnum.LIUBEI));运行demo,控制台打印:

Android开发之枚举(Enum)在实际项目中的应用

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

Android开发之枚举(Enum)在实际项目中的应用

9、compareTo(E o),比较当前枚举对象和传入的对象的顺序对象,返回一个负整数、0或正整数Lo爿讥旌护g.d(TAG, "test: "+ExcellentStudentEnum.LIUBEI.compareTo(ExcellentStudentEnum.ZHAOYUN));Log.d(TAG, "test: "+ExcellentStudentEnum.ZHAOYUN.compareTo(ExcellentStudentEnum.ZHAOYUN));Log.d(TAG, "test: "+ExcellentStudentEnum.ZHAOYUN.compareTo(ExcellentStudentEnum.ZHANGFEI));运行demo,控制台打印:

Android开发之枚举(Enum)在实际项目中的应用

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

Android开发之枚举(Enum)在实际项目中的应用

11、valueOf(Class<T>,String), 这是一个类方法,返回枚举常量的名字,测试代码如下:Log.d(TAG, "test: "+ExcellentStudentEnum.valueOf(ExcellentStudentEnum.LIUBEI.getDeclaringClass(),"LIUBEI"));Log.d(TAG, "test: "+ExcellentStudentEnum.valueOf(ExcellentStudentEnum.LIUBEI.getDeclaringClass(),"ZHANGFEI"));Log.d(TAG, "test: "+ExcellentStudentEnum.valueOf(ExcellentStudentEnum.LIUBEI.getDeclaringClass(),"ZHAOYUN"));运行demo,控制台打印:

Android开发之枚举(Enum)在实际项目中的应用

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

Android开发之枚举(Enum)在实际项目中的应用

13、valueOf(String),这是一个隐藏起来的类方法,返回指定枚举常量名字的枚举对象,测试代码如下:Log.d(TAG, "t髫潋啜缅est: "+ExcellentStudentEnum.valueOf("LIUBEI").getNum());Log.d(TAG, "test: "+ExcellentStudentEnum.valueOf("ZHAOYUN").getProfession());运行demo,控制台打印:

Android开发之枚举(Enum)在实际项目中的应用

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢