Java的枚举类型
如果类的对象的数量只有有限个,并且可以确定对象的属性,那么考虑使用枚举类。例如:
- 性别:Man(男)、Woman(女)
- 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Checked(已确认收货)
定义枚举类型
public enum UserType {
// 1.提供枚举类的对象(枚举常量)
common("普通用户", 0),
sectionAdmin("板块管理员", 1),
superAdmin("超级管理员", 2);
// 2.对象的属性
private String typeName;
private Integer typeId;
// 3.私有化构造器(private 可省略)
private UserType(String typeName, Integer typeId) {
this.typeName = typeName;
this.typeId = typeId;
}
}
介绍枚举类型
如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用。
所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString() 方法,这个方法能够返回枚举常量名。例如,Size.SMALL.toString() 将返回字符串 “SMALL”。
toString() 的逆方法是 valueOf() 静态方法。例如,语句:Size s = Enum.valueOf(Size.class, "SMALL"); 将变量 s 设置成 Size.SMALL。
每个枚举类型都有一个静态的 values() 方法,它将返回一个包含全部枚举值的数组。
ordinal 方法返回 enum 声明中枚举常量的位置,位置从 0 开始计数。例如:Size.SMALL.ordinal() 返回 0。
public static void main(String[] args) {
// [common, sectionAdmin, superAdmin]
UserType[] userTypes = UserType.values();
// 返回具有指定名称的枚举常量
UserType common = UserType.valueOf("common");
// 返回具有指定名称的指定枚举类型的枚举常量
UserType common1 = Enum.valueOf(UserType.class, "common");
// 返回枚举常量的名称 (Enum 类重写了 toString() )
String name = common.toString();
}
枚举类实现接口
情况一:把枚举类当作正常的类,在类中实现接口
情况二:每个枚举常量分别实现接口
public enum UserType implements UserService {
// 1.提供枚举类的对象
common("普通用户", 0) {
@Override
public void method() {
}
},
sectionAdmin("板块管理员", 1) {
@Override
public void method() {
}
},
superAdmin("超级管理员", 2) {
@Override
public void method() {
}
};
// 2.对象的属性
private String typeName;
private Integer typeId;
// 3.私有化的构造器
private UserType(String typeName, Integer typeId) {
this.typeName = typeName;
this.typeId = typeId;
}
}
参考资料
《Java核心技术卷一:基础知识》(第10版)第5章:5.6 枚举类
本文来自博客园,作者:真正的飞鱼,转载请注明原文链接:https://www.cnblogs.com/feiyu2/p/enum.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix