JAVA 枚举类型
# 枚举类型 (JAVA编程思想-学习笔记)
关键字enum可以将一组具名的值的有限集合创建为一种新的类型。
创建enum时,编译器会为你生成一个相关的类,这个类继承自java.lang.Enum。
可以同时实现一个或多个接口。
1、基本特性:
values(),可以遍历enum实例,返回enum实例的数组,数组中的元素严格保持其在enum中声明的顺序。
ordinal(),返回一个int值,这是每个enum实例在声明时的次序,从0开始。
name(),返回enum实例声明时的名字。
getDeclaringClass(),所属的enum类。
每个enum元素都是enum类型的static final实例。
2、向enum中添加新方法:
添加自定义方法时,必须在enum实例序列的最后添加一个分号。同时,java要求必须先定义enum实例。
enum中的构造器与方法和普通的类没有区别,除了有少许限制外,enum就是一个普通的类。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public enum OzWitch{ // Instances must be defined first, before methods; WEST( "Miss Gulch" ), NORTH( "Glinda" ), EAST( "Wicked" ), SOUTH("Good); private String description; // Constructor must be package or private access; private OzWitch(String description){ this .description = description; } public String getDescription(){ return description; } } |
1 2 3 4 5 6 7 8 | // Compiled from 'OzWitch.java' abstract class OzWitch extends java.lang.Enum{ public static final OzWitch WEST; public static final OzWitch NORTH; public static final OzWitch EAST; public static final OzWitch SOUTH; ... } |
3、常量相关的方法
Java的enum有一个有趣的特性,即允许为enum实例编写方法,从而为每个enum实例赋予各自不同的行为。
要实现常量相关的方法,你需要为enum定义一个或多个abstract方法,然后为每个enum实例实现该抽象方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public enum ConstantSpecificMethod{ CLASSPATH{ String getInfo(){ return System.getenv( "CLASSPATH" ); } }, VERSION{ String getInfo(){ return System.getenv( "java.version" ); } }; abstract String getInfo(); } |
例子中,每个enum实例具备自己独特的行为,enum实例似乎被当作其"超类"ConstantSpecificMethod来使用,
在调用getInfo()方法时,体现出多态的行为。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步