经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
Java的枚举类型
来源:cnblogs  作者:真正的飞鱼  时间:2023/5/12 8:51:06  对本文有异议

如果类的对象的数量只有有限个,并且可以确定对象的属性,那么考虑使用枚举类。例如:

  • 性别:Man(男)、Woman(女)
  • 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Checked(已确认收货)

定义枚举类型

  1. public enum UserType {
  2. // 1.提供枚举类的对象(枚举常量)
  3. common("普通用户", 0),
  4. sectionAdmin("板块管理员", 1),
  5. superAdmin("超级管理员", 2);
  6. // 2.对象的属性
  7. private String typeName;
  8. private Integer typeId;
  9. // 3.私有化构造器(private 可省略)
  10. private UserType(String typeName, Integer typeId) {
  11. this.typeName = typeName;
  12. this.typeId = typeId;
  13. }
  14. }

介绍枚举类型

如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用。

所有的枚举类型都是 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。

  1. public static void main(String[] args) {
  2. // [common, sectionAdmin, superAdmin]
  3. UserType[] userTypes = UserType.values();
  4. // 返回具有指定名称的枚举常量
  5. UserType common = UserType.valueOf("common");
  6. // 返回具有指定名称的指定枚举类型的枚举常量
  7. UserType common1 = Enum.valueOf(UserType.class, "common");
  8. // 返回枚举常量的名称 (Enum 类重写了 toString() )
  9. String name = common.toString();
  10. }

枚举类实现接口

情况一:把枚举类当作正常的类,在类中实现接口

情况二:每个枚举常量分别实现接口

  1. public enum UserType implements UserService {
  2. // 1.提供枚举类的对象
  3. common("普通用户", 0) {
  4. @Override
  5. public void method() {
  6. }
  7. },
  8. sectionAdmin("板块管理员", 1) {
  9. @Override
  10. public void method() {
  11. }
  12. },
  13. superAdmin("超级管理员", 2) {
  14. @Override
  15. public void method() {
  16. }
  17. };
  18. // 2.对象的属性
  19. private String typeName;
  20. private Integer typeId;
  21. // 3.私有化的构造器
  22. private UserType(String typeName, Integer typeId) {
  23. this.typeName = typeName;
  24. this.typeId = typeId;
  25. }
  26. }

参考资料

《Java核心技术卷一:基础知识》(第10版)第5章:5.6 枚举类

原文链接:https://www.cnblogs.com/feiyu2/p/enum.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号